原型链中对象与函数的关系

80 阅读1分钟
  • 在原型链中,对象和函数有一定的联系。关系如图所示

image.png 其中普通函数的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*/

image.png