当前位置:  开发笔记 > 编程语言 > 正文

Javascript新关键字未重置所有属性

如何解决《Javascript新关键字未重置所有属性》经验,为你挑选了1个好方法。

看下面的代码.我会除了输出将是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/



1> Pointy..:

role属性位于原型上,因此该对象在使用构造函数创建的所有实例之间共享.

如果你想role在每个用户上有一个单独的对象,你必须在构造函数中初始化它(或者至少在某个地方):

function User() {
  this.role = { name: null };
}

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有