以下代码:
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中忽略它吗?
答案 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。