2

我有一个对象,它有一个使用属性的方法。我是否正确使用了该属性?

function TestObject(words) {
  this.words = words;

  function alertStuff() {
    console.log(this.words);
  }
}

doItPlease = new TestObject('say something!');
doItPlease.alertStuff();
4

1 回答 1

4

JavaScript 中的属性和变量是不同的。

this.alertStuff = function() {
    console.log(this.words);
}

您的this示例中的 保存对新对象的引用。构造函数中的任何参数/变量与该对象没有直接关系。


更惯用的是将函数添加到公共原型对象而不是每个实例。

TestObject.prototype.alertStuff = function() {
    console.log(this.words);
}

这是如何工作的,当你这样做时, indoItPlease.alertStuff()的值会自动设置为对象。因此,该方法可以访问该对象及其所有属性。thisalertStuffdoItPleasealertStuff()

因为您从TestObject构造函数创建的所有实例TestObject.prototype在它们的原型链中都有相同的对象,所以内存开销更少,因为它们都共享相同的函数。

于 2013-06-28T18:45:27.877 回答