我有以下代码:
var A = function() {};
var a = new A();
var b = new A();
A.prototype.member1 = 10;
A.prototype = {}
var c = new A();
console.log(a.member1);
console.log(a.constructor === b.constructor);
console.log(a.constructor === c.constructor);
console.log('---------');
console.log(c.member1);
它的输出是:
10
true
false
---------
undefined
undefined
原型为a
and b
没有改变并且c
有一个新的。我说得对吗,这是由于以下事实造成的a.constructor
不等于c.constructor
他们每个人都有自己的prototype
?当两个对象的构造函数可能不相等时,是否还有其他情况?
额外问题:为什么印了两个undefined
字符串? (铬)
当你打电话的时候
var a = new A();
基本上这个任务已经完成:
a.__proto__ = A.prototype;
然后你重新分配A.prototype
到一个新对象,所以c
gets {}
作为它的原型。
A.prototype = {};
var c = new A();
然而,这并没有破坏旧的A.prototype
目的 -a.__proto__
仍然指向它。
我是否正确,这是因为 a.constructor 不等于 c.constructor 并且它们每个人都有自己的原型?
.constructor
基本上只是一个便利的属性。它对实例的行为没有影响。
额外问题:为什么打印了两个未定义的字符串?
不在我的控制台中,他们没有! (歌剧12)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)