javascript - 将 js 对象的属性传递到其方法中

标签 javascript jquery oop this

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

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

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

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

最佳答案

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

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

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


更惯用的做法是将函数添加到公共(public)原型(prototype)对象而不是每个实例中。

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

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

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

关于javascript - 将 js 对象的属性传递到其方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371563/

相关文章:

jquery - 在图像覆盖的 header 标记内带有顶部边距的带边框的文本标题

c++ - 使用 Tab 在编辑控件之间切换?

javascript - 从 Window.location.hash 创建数组

javascript - 如何在选项卡中获取所有 frameId?

javascript - 如何访问Json数据?

javascript - 如何在构造函数中初始化依赖于另一个方法值的状态方法

javascript - jQuery .data ('key' ) 对于所有元素

PHP:正确使用单例模式?

java - 为什么我无法调用我在字段中定义的方法?

javascript - 使用 jQuery Ajax 发送 'pure' JSON 而不是多种形式