level 1
function Person() {
Person.prototype = {
constructor: Person,
name: 'name1',
sayhi: function() {
alert('hello: ' + this.name);
}
};
}
/* 如果把 new Person() 改成下面那样 你应该明白吧
* 具体可以百度new干了哪些事
*/
var p = {};
p.__proto__ = Person.prototype; /* __proto__是个隐藏属性 具体可以百度
先把Person原型值进行赋值 也就是 {constructor: Person}
*/
Person.call(p); /* 在call调用 对Person原型进行赋值 但是 p__proto__ 已经是{constructor: Person}
这就是为什么 Person原型 赋值或者添加属性得在外面的原因
*/
p.sayhi(); // error
2020年04月02日 11点04分






