Javascript 传递一个js对象';将属性添加到其方法中

Javascript 传递一个js对象';将属性添加到其方法中,javascript,jquery,oop,this,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.alert

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

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);
}
示例中的
包含对新对象的引用。构造函数中的任何参数/变量都与该对象没有直接关系


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

TestObject.prototype.alertStuff = function() {
    console.log(this.words);
}
其工作原理是,当您执行
doItPlease.alertStuff()
时,
alertStuff
中的
this
的值会自动设置为
doItPlease
对象。因此,
alertStuff()
方法可以访问该对象及其所有属性


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

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

this.alertStuff = function() {
    console.log(this.words);
}
示例中的
包含对新对象的引用。构造函数中的任何参数/变量都与该对象没有直接关系


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

TestObject.prototype.alertStuff = function() {
    console.log(this.words);
}
其工作原理是,当您执行
doItPlease.alertStuff()
时,
alertStuff
中的
this
的值会自动设置为
doItPlease
对象。因此,
alertStuff()
方法可以访问该对象及其所有属性


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

非常感谢,这更清楚了!是否可以在对象定义的花括号内定义方法?我不想让一个代码块定义我的对象,另一个代码块扩展它的原型:)@DonnyP:我不知道你所说的对象定义的花括号是什么意思。这里唯一的大括号定义函数体。我也不知道你说的一个代码块定义了对象,另一个扩展了原型是什么意思。你能解释一下你想避免什么吗?@DonnyP是的,这是可能的。这就是所谓的结束。闭包中的函数仅在范围内可用。非常感谢,这更清楚了!是否可以在对象定义的花括号内定义方法?我不想让一个代码块定义我的对象,另一个代码块扩展它的原型:)@DonnyP:我不知道你所说的对象定义的花括号是什么意思。这里唯一的大括号定义函数体。我也不知道你说的一个代码块定义了对象,另一个扩展了原型是什么意思。你能解释一下你想避免什么吗?@DonnyP是的,这是可能的。这就是所谓的结束。闭包内的函数仅在作用域内可用。