使用关键字“this”有什么好处?

时间:2016-04-23 03:36:36

标签: javascript

以下代码:

var cody = {
  living:true,
  age:23,
  gender:'male',
  getGender:function(){return cody.gender;} 
};

与:

相同
var cody = {
  living:true,
  age:23,
  gender:'male',
  getGender:function(){return this.gender;} 
};

两个代码都实现了相同的目标。唯一的区别是 cody 与关键字的交换。在Javascript中使用关键字 this 有什么好处?它会提升性能吗?我们可以在OOP中忽略它吗?

2 个答案:

答案 0 :(得分:6)

this指的是当前有关结构的实例化。例如,以下内容将失败:

var cody = {
  living:true,
  age:23,
  gender:'male',
  getGender:function(){return cody.gender}
};
var codyCopy = cody;
cody = "foobar";
//undefined
alert(codyCopy.getGender());

但是,使用this不会,因为它正确引用了codyCopy

var cody = {
  living:true,
  age:23,
  gender:'male',
  getGender:function(){return this.gender}
};
var codyCopy = cody;
cody = "foobar";
//male
alert(codyCopy.getGender());

答案 1 :(得分:1)

'this'关键字用于指代您的代码所在的当前执行上下文或对象。当您想要定义一种类型的对象(例如人类)时,它非常有用:

var Person = function(name, living, age, gender) {
    this.name = name;
    this.living = living;
    this.age = age;
    this.gender = gender;
    this.getGender = function(){return this.gender};
};

var cody = new Person('Cody', true, 23, 'male');
var john = new Person('John', true, 25, 'male');

这允许您使用'new'关键字创建具有各自值的Person的多个唯一实例。所以在var cody = new Person('Cody', true, 23, 'male');'行'这个'指的是cody var,在下一行它指的是john var。在你的代码中'this'指的是你的cody var,因为它在cody对象里面,但是没有必要,因为你没有用自己的值创建新的codys。