Javascript构造函数重写

时间:2014-04-24 08:33:13

标签: javascript object constructor prototype

这是一个功能样本:

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'? 感谢

1 个答案:

答案 0 :(得分:3)

当您在构造函数的原型中添加任何内容时,将由所有实例共享。这是函数的最佳选择,但可能不适用于数据。所以,你想在构造函数本身中构造options对象,就像这样

function User(name) {
    this.options = {
        name: name || "Default"
    };
}

当你这样做时,每当创建User的对象时,每个对象都将获得自己的options对象。因此,使用一个对象更改options不会影响任何其他对象options