gpt4 book ai didi

javascript - 给 JS 对象添加属性

转载 作者:搜寻专家 更新时间:2023-11-01 04:23:54 33 4
gpt4 key购买 nike

我知道这可能是重复的,但我发现了很多与我相似的问题,但他们的回答并没有回答我的问题。例如这个页面https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty据我所知,没有包含我的问题的答案。

这是我的:

var User = function() {
this.name = '';
}

User.prototype.password = '';
// or
Object.defineProperty(User.prototype, 'password', {enumerable: true, configurable: true, writable: true});

console.log(new User()); // User {name: ""}

这当然会将密码添加到对象的原型(prototype)中,但我想在定义构造函数后将密码添加为成员。有没有办法做到这一点?

var User = function() {
this.name = '';
}

User.prototype.password = '';

console.log(new User()); // User {name: "", password: ""}

最佳答案

如果你想用 new 运算符创建一个新对象,如果你不能再修改构造函数,这可能会很困难。据我所知,如果您使用 new 运算符,构造函数是唯一可以定义实例变量的地方。

如果您要使用 Object.create 创建对象,you can pass in further properties in the second parameter ,类似于 Object.defineProperty:

var User = function() {
this.name = '';
}

User.prototype.xyz = ''; // Add whatever you need to your prototype

var o = Object.create(User.prototype, {
'password': {enumerable: true, configurable: true, writable: true, value: ''}
});
User.call(o);

如果您需要在创建对象之前执行此操作,您总是可以将原始构造函数包装在另一个函数中:

var User = function() {
this.name = '';
}

User.prototype.xyz = ''; // Add whatever you need to your prototype

var originalUser = User;

var User = function() {
this.password = '';
originalUser.call(this);
}

User.prototype = originalUser.prototype;

var o = new User();

我个人觉得 Object.create 版本更清晰,更不容易出错(尤其是当您有多个属性要在不同时间添加时)。

关于javascript - 给 JS 对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32888763/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com