首页 > 其他 > 详细

构造函数和原型

时间:2019-12-14 16:55:56      阅读:82      评论:0      收藏:0      [点我收藏+]
      function Student(name, age) {
        this.name = name
        this.age = age
      }
      Student.prototype = {
        constructor: Student,
        study: function() {
          console.log(‘在学习‘)
        }
      }
      var zs = new Student(‘张三‘, 18)

我们先来看一张图

技术分享图片

 

 在这张图里Student构造函数的prototype指向Student原型对象,Student原型对象又指向Student构造函数,zs对象.__proto__指向的是Student原型对象。这就是构造函数、实例和原型对象三角关系。

那么只要是个对象,就有__proto__这个属性,那么Student原型对象又指向谁呢?

可以打印一下console.log(Student.prototype.__proto__)

技术分享图片

 

可以看到指向的是Object原型对象,这个原型对象是由Object创建而来的。

那么Object原型对象的__proto__又指向谁呢?

console.log(Object.prototype.__proto__) // null

输出的是null,所以指向的是null,这就构成了原型链。

所以在访问对象成员的时候顺序应该是先访问zs对象是否存在这个成员,如果没有,就到Student原型上查看是否有这个成员,如果没有,就到Object原型上查看是否有这个成员,如果再没有,就返回null

 

 

构造函数和原型

原文:https://www.cnblogs.com/perse/p/12039997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!