Ada*_*der 6 javascript prototype
我有以下代码:
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);
Run Code Online (Sandbox Code Playgroud)
它的输出是:
10
true
false
---------
undefined
undefined
Run Code Online (Sandbox Code Playgroud)
原型a并b没有改变,并c有一个新的.我是对的,这是因为a.constructor不相等c.constructor而且每个人都有自己的事实prototype?当两个物体的构造者可能不相等时,还有其他的东西吗?
额外的问题:为什么印有两个undefined字符串?(铬)
在你打电话的时候
var a = new A();
Run Code Online (Sandbox Code Playgroud)
基本上这个任务完成了:
a.__proto__ = A.prototype;
Run Code Online (Sandbox Code Playgroud)
然后你重新分配A.prototype给一个新对象,所以c得到{}它的原型.
A.prototype = {};
var c = new A();
Run Code Online (Sandbox Code Playgroud)
但是,这并不会破坏旧A.prototype对象 - a.__proto__仍然指向它.
我是对的,这是因为a.constructor不等于c.constructor并且每个都有自己的原型吗?
.constructor基本上只是一个便利的财产.它对实例的行为没有影响.
额外的问题:为什么印有两个未定义的字符串?
不在我的控制台,他们没有!(歌剧12)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |