Javascript 构造函数重写

标签 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'? 谢谢

最佳答案

当您在构造函数的原型(prototype)中添加任何内容时,该原型(prototype)将由所有实例共享。这对于功能来说是最好的,但对于数据来说可能不是。因此,您想在构造函数本身中构造 options 对象,如下所示

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

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

关于Javascript 构造函数重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23263788/

相关文章:

javascript - 从鼠标滚轮事件查找鼠标位置

javascript - 如何遍历具有数组的对象并对值求和?

javascript - 导出对象以在另一个 JavaScript 文件中重用,无需使用默认运算符

c++ - c++中派生类的初始化

javascript - RegExp 构造函数属性输入

javascript - 在 Derived.prototype = new Base 处使用 'new' 关键字的原因是什么

javascript - 弹出表单成功消息

javascript - Angular 12.1 使用 typescript 添加 html 元素

javascript - 借助 <tr> 的 id 更改 <td> 内的内容

java - 如何在基于文本的游戏中创建房间(初学者)