将js对象的属性传递给其方法

时间:2013-06-28 18:44:39

标签: javascript jquery oop this

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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


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

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

这是如何工作的,当您执行doItPlease.alertStuff()时,thisalertStuff的值会自动设置为doItPlease个对象。因此,alertStuff()方法可以访问该对象及其所有属性。

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