这是一个函数示例:
function User (name) {
this.options.name = name;
};
User.prototype.options = {
name: 'Default'
};
var foo = new User('foo');
var bar = new User('bar');
console.log( foo.options.name ); // 'bar'
console.log( bar.options.name ); // 'bar'
问题是,如何获取'foo'和'bar'? 谢谢
最佳答案
当您在构造函数的原型(prototype)中添加任何内容时,该原型(prototype)将由所有实例共享。这对于功能来说是最好的,但对于数据来说可能不是。因此,您想在构造函数本身中构造 options
对象,如下所示
function User(name) {
this.options = {
name: name || "Default"
};
}
当你这样做时,每当创建User
对象时,每个对象都会获得自己的options
对象。因此,更改一个对象的选项
不会影响任何其他对象的选项
。
关于Javascript 构造函数重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23263788/