- 在原型链中,对象和函数有一定的联系。关系如图所示
其中普通函数的prototype属性都为new Object,new Object的原型为Object;而普通对象的原型__proto__也为Object。
Object.prototype.life = 1 //以后用Object创建的对象的原型对象有life属性1
Function.prototype.life = 2
function fn() {
this.name = "karen"
}
var f1 = new fn()
console.log(f1.name, f1.life) //"karen" 1
console.log(fn.life, fn.name) //2 fn
/* f1是由new创建的对象,fn中的this就是f1,所以f1.name=karen,f1没有life属性,
要去原型找,由上图可知原型为Object,所以life=1
fn是普通对象,他的函数名就为name,即fn.name=fn,fn没有life属性就会往原型链找,
由上图可知为Function.prototype,所以life=2*/