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是的,这是可能的。这就是所谓的结束。闭包内的函数仅在作用域内可用。