0
点赞
收藏
分享

微信扫一扫

JS - 显式原型和隐式原型

A邱凌 2022-05-02 阅读 73
<script>
  /*
    1、每个函数function都有一个prototype,即显式原型(属性)
    2、每个实例对象都有一个__proto__,可称为隐式原型(属性)
    3、实例对象的隐式原型的值为其对应的构造函数的显式原型的值
    4、总结
      *函数的prototype属性:在定义函数时自动添加,默认指向一个空的Object对象
      *对象的__proto__属性:创建对象时自动添加,默认值是构造函数的prototype属性值
      *能直接操作显式原型prototype,不能直接操作隐式原型__proto__(ES6之前)
  */
  
  // 定义构造函数
  // 定义函数时,会自动添加prototype属性,默认指向一个空的Object对象
  function Fun(){}
  console.log(Fun.prototype) // Object对象
  // 创建对象时,会自动添加__proto__属性,默认值为构造函数的prototype属性值
  var fun = new Fun()
  console.log(fun.__proto__) // Object对象
  // 实例对象的隐式原型的值为其对应的构造函数的显式原型的值
  console.log(Fun.prototype === fun.__proto__) // true

  // 通过prototype添加方法,通过__proto__调用
  Fun.prototype.test = function(){
    alert('Tom')
  }
  fun.test()
</script>
举报

相关推荐

0 条评论