我有一个对象,它有一个使用属性的方法。我正确使用该属性吗?
function TestObject(words) {
this.words = words;
function alertStuff() {
console.log(this.words);
}
}
doItPlease = new TestObject('say something!');
doItPlease.alertStuff();
答案 0 :(得分:4)
JavaScript中的属性和变量是不同的。
this.alertStuff = function() {
console.log(this.words);
}
示例中的this
保留对新对象的引用。构造函数中的任何参数/变量与该对象没有直接关系。
更惯用的是将函数添加到公共原型对象而不是每个实例。
TestObject.prototype.alertStuff = function() {
console.log(this.words);
}
这是如何工作的,当您执行doItPlease.alertStuff()
时,this
中alertStuff
的值会自动设置为doItPlease
个对象。因此,alertStuff()
方法可以访问该对象及其所有属性。
因为您从TestObject
构造函数创建的所有实例在其原型链中都具有相同的TestObject.prototype
对象,所以内存开销较少,因为它们都共享相同的函数。