JS中之第一字

 

JS中this关键字

 

当学js时,应该事先了解下this关键字,关于js中之this关键字和另的面向对象语言中之this是不同之,比如在java中,this指的的是眼前目标,而于js中,w3c是如此规定的:

关键字 this

this 的功能

于 ECMAScript 中,要控的最为要害的定义有是要字 this
的用法,它用当靶的方式中。关键字 this 总是指于调用该办法的目标,例如:

var oCar = new Object;
oCar.color = "red";
oCar.showColor = function() {
  alert(this.color);
};

oCar.showColor();       //输出 "red"

以上面的代码中,关键字 this 用当目标的 showColor()
方法被。在这条件中,this 等于 oCar。下面的代码和地方的代码的功力雷同:

var oCar = new Object;
oCar.color = "red";
oCar.showColor = function() {
  alert(oCar.color);
};

oCar.showColor();       //输出 "red"

使用 this 的原因

何以采取 this
呢?因为在实例化对象时,总是不能够确定开发者会动什么的变量名。使用
this,即可在任何多个地方用同一个函数。请考虑下面的例子:

function showColor() {
  alert(this.color);
};

var oCar1 = new Object;
oCar1.color = "red";
oCar1.showColor = showColor;

var oCar2 = new Object;
oCar2.color = "blue";
oCar2.showColor = showColor;

oCar1.showColor();      //输出 "red"
oCar2.showColor();      //输出 "blue"

于上头的代码中,首先用 this 定义函数
showColor(),然后创建两只目标(oCar1 和 oCar2),一个目标的 color
属性被设置为 “red”,另一个靶的 color 属性被装为
“blue”。两单对象还叫予以了性 showColor,指向原始的 showColor ()
函数(注意这里不设有命名问题,因为一个凡是大局函数,而另一个凡目标的性)。调用每个对象的
showColor(),oCar1 输出是 “red”,而 oCar2 的出口是 “blue”。这是因调用
oCar1.showColor() 时,函数中之 this 关键字等于 oCar1。调用
oCar2.showColor() 时,函数中的 this 关键字等于 oCar2。

小心,引用对象的习性时,必须以 this
关键字。例如,如果用下面的代码,showColor() 方法无能够运作:

function showColor() {
  alert(color);
};

假定不用对象或 this 关键字引用变量,ECMAScript
就会见拿它们当局部变量或全局变量。然后该函数将寻找名也 color
的局部或全局变量,但是非见面找到。结果什么也?该函数将以警示被显得
“null”。

以w3c中定义格外醒目,this是负于调用该方法的目标。在实际操作中产生诸多状况让咱们摸索不干净头脑,下面举几独例,让咱更好之知情this。

每当学js闭包的当儿看这样一如既往篇文章,里面有只思考题。

var name = “The Window”;   
  var object = {   
    name : “My Object”,   
    getNameFunc : function(){   
      return function(){   
        return this.name;   
     };   
    }   
};   
alert(object.getNameFunc()());  //The Window

自己觉得这个是这么当尽中的深方式的时候return
this.name;这里的this在眼前方式应该替指getNameFunc,很明白我之想法是不当的!