继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JS剖析 —— 原型链

前端小喵
关注TA
已关注
手记 17
粉丝 12
获赞 33
  • 原型链

  • 访问一个对象的属性时:

    • 先在自身属性中查找,找到返回

    • 如果没有,再沿着proto这条链向上查找,找到返回

    • 如果最终没找到,返回undefined

  • 别名:隐式原型链

  • 作用:查找对象的属性(方法)

  • 构造函数/原型/实体对象的关系(图解)
    var o1=new Object();
    var o2={};


    5acb3c8700013dc501600160.jpg

    image.png

  • 构造函数/原型/实体对象的关系2(图解)
    function Foo(){}


    5acb3c8700013dc501600160.jpg

    image.png

// console.log(Object)//console.log(Object.prototype)console.log(Object.prototype.__proto__)    //输出null
  function Fn() {    this.test1 = function () {      console.log('test1()')
    }
  }  console.log(Fn.prototype);
  Fn.prototype.test2 = function () {    console.log('test2()')
  }  var fn = new Fn()
  fn.test1()
  fn.test2()  console.log(fn.toString())  console.log(fn.test3)  // fn.test3()

5acb3c8700013dc501600160.jpg

原型链分析.png

 /*
 1. 函数的显示原型指向的对象默认是空Object实例对象(但Object不满足)
  */
 console.log(Fn.prototype instanceof Object) // true
 console.log(Object.prototype instanceof Object) // false
 console.log(Function.prototype instanceof Object) // true
 /*
 2. 所有函数都是Function的实例(包含Function)
 */
 console.log(Function.__proto__===Function.prototype) /*
 3. Object的原型对象是原型链尽头
  */
 console.log(Object.prototype.__proto__) // null


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP