看下面的代码.我会除了输出将是123-admin 0-null.但相反,它的123-admin 0-admin.你能解释一下为什么new关键字不能取代整个用户对象吗?
function User() { } User.prototype.id=0; User.prototype.role={name:null} var user = new User(); user.role.name = 'admin'; user.id = 123; window.document.write(" "+user.id+"-"+user.role.name); user = new User(); window.document.write(" "+user.id+"-"+user.role.name);
同样在JSFiddle中:https://jsfiddle.net/tfgx77au/6/
该role
属性位于原型上,因此该对象在使用构造函数创建的所有实例之间共享.
如果你想role
在每个用户上有一个单独的对象,你必须在构造函数中初始化它(或者至少在某个地方):
function User() { this.role = { name: null }; }