javascript中的this:
先来看一段代码:
function test(){ //定义一个函数
alert(this.p);
}
//定义两个对象
var obj1=new Object();
var obj2=new Object();
//给两个对象都添加属性p,并分别等于1和2
obj1.p=1;
obj2.p=2;
//给obj1添加方法,这个方法是我们前面定义的函数,用于显示p的值
obj1.getP= test;
obj1.getP();//调用obj1的getP方法,输出值为1
obj2.getP=obj1.getP;//使obj2的getP方法等于obj1的getP方法
obj2.getP(); //调用obj2的getP方法,输出值为2
下面来作一下说明:
这是一个函数作为对象的方法来使用的一个例子,在这种情况下很简单。这个函数中的this是被哪个对象调用的,那么这个this就代表谁。但要注意,要在使用之前一定要让这个函数作为对象的一个方法,就像上面
ojb1.getP=test;。在这个例子中,
ojb2.getP=obj1.getP也是让obj2.getP的指针指向了test函数。
那么,当这个函数单纯使用的时候,这个this又代表什么呢?
var p = "this is window object p";
function test(){ //还是以这个函数为例
alert(this.p);
}
test(); //输出this is window object p
可以看到它的输出是全局变量 p 的值,这是为什么呢?
这是因为:当javascript解释器开始运行时,会首先创建一个全局对象,而全局变量是这个全局对象的属性,所有的方法就是这个全局对象的方法。在客户端的javascript中,这个全局对象名为:window。在调用时如果前面没有指定对象,那么它就是全局对象window。所以出现以上结果也就好理解了。
下面看一下构造函数中的this;
function Rectangle(w,h){
this.width = w;
this.height= h;
}
var rect = new Rectangle(20,10);
上面代码中代表的this是代表的谁呢?按上面所说的,如果单独调用时它就代表window。但构造函数一般来说都不是为了单独使用而定义的,都是为了创建对象而定义的。所以当创建对象时,这个this是什么呢?那就告诉你,它代表的就是创建的这个对象。估计大家都会说,你这不是废话吗?这还用说?呵呵,大家只要这么说,那就是太好了,我很高兴,知道大家的水平提高了。但是你知道为什么是代表了被新创建的这个对象吗? 我们不但要“知其然”,更要“知其所以然”。下面来解释一下:看最后一句代码:
var rect = new Rectangle(20,10);
当执行这句代码时,构造函数遇到了new关键字,就会马上创建一个空的对象,注意,这时的对象没有任何属性和方法,紧跟着这个对象被隐式的传递到构造函数中去,在构造函数中为这个对象赋值,于是对象便有了初始的属性了。所以在这其中,this就代表的是这个新创建的对象。
分享到:
相关推荐
JavaScript 中的 this 关键字是一个非常重要的概念,它经常会使开发者感到困 惑。通常来说,this 的值是在函数被调用时确定的,其值取决于函数被调用的方 式。本文将介绍 JavaScript 中 this 的用法,从而帮助开发者...
JavaScript中this的指向还没搞明白?来这看看 你就懂啦~
Javascript 中 this指向
JavaScript程序设计javascript中this的指向问题共6页.pdf.zip
NULL 博文链接:https://wv1124.iteye.com/blog/505231
JavaScript中this指向.pdf
JavaScript中this指向.docx
JavaScript中this的使用,简单理解,快速学会
复习JavaScript中this指向及绑定
探寻JavaScript中this指针指向_.docx
详解JavaScript中this关键字的用法_.docx
深化理解Javascript中this的作用域_.docx
对大多数有OOP开发经验的开发人员来说this是当前作用域中引用普通元素的标识符,但是在Javascript中它却显得古灵精怪的,因为它不是固定不变的,而是随着它的执行环境的改变而改变。在Javascript中this总是指向调用...
JavaScript程序设计
本文实例讲述了javascript中this的用法。分享给大家供大家参考,具体如下: 实践一:this在点击等事件中的指向 html结构: <button id='btn'>click me</button> javascript结构: var btn = document...
前言关于JavaScript中this的用法网络中已经有较多比较详尽的介绍,可以参考本文的参考学习资料和网络。本文结合网络收集整理,尝试以一种简易的方式阐述JavaScript中this的用法,希望对大家关于JavaScript中this用法...
JavaScript中this的指向问题 1.默认绑定 没有被明确隶属对象执行的函数的this指向window console.log(this) //这里的this指向window 2.隐式绑定 被明确隶属对象执行的函数的this,指向执行对象 btn.onclick = ...
JavaScript中this指向问题 记得初学 JavaScript 时,其中 this 的指向问题曾让我头疼不已,我还曾私自将其与闭包、原型(原型链)并称 JS 武林中的三大魔头。如果你要想在 JS 武林中称霸一方,必须将这三大魔头击倒...
应该是最常用的吧,函数中调用一个this,这里其实就是全局变量 var value="0"; function mei(){ var value="1"; console.log(this.value); //0 console.log(value); //1 } mei(); 输出0就是因为this指向的是全局...
JavaScript 中 this 的指向问题 前面已经总结过,但在实际开中, 很多场景都需要改变 this 的指向。 现在我们讨论更改 this 指向的问题。 call更改this指向 call 的使用语法:func.call(thisArg, arg1, arg2, …) ...