js原型、原型链

<script>
    function Super() {
      this.name = 'yzy'
      this.sayHi = function () {
        alert('HI')
      }
    }
    Super.prototype.sayBye = function () {
      console.log('bye')
    }
    let sub1 = new Super();
    console.log(Super.prototype, 'Super.prototype')  //每个函数都有一个 prototype 属性
    console.dir(Super) //每一个JavaScript对象(除了 null )都具有的一个属性,叫proto,这个属性会指向该对象的原型
    console.dir(Super.__proto__, 'Super.__proto__') //每一个JavaScript对象(除了 null )都具有的一个属性,叫proto,这个属性会指向该对象的原型

    console.log(sub1, 'sub1')
    console.log(sub1.__proto__, 'sub1.__proto__') //每一个JavaScript对象(除了 null )都具有的一个属性,叫proto,这个属性会指向该对象的原型
    // console.log(Super.prototype === sub1.__proto__)

    console.dir(Super.prototype.constructor)
    console.dir(sub1.__proto__.constructor)
    console.dir(sub1.__proto__.constructor === Super.prototype.constructor)

    // 顺便学习一个ES5的方法,可以获得对象的原型
    console.dir(Object.getPrototypeOf(sub1) === sub1.__proto__)
    console.dir(Object.getPrototypeOf(sub1) === Super.prototype)
    console.dir(Object.getPrototypeOf(sub1).constructor === Super.prototype.constructor)

    console.dir(Super.prototype.__proto__, 'Super.prototype.__proto__')
    console.dir(Object.prototype)
    console.log(Super.prototype.__proto__ === Object.prototype, '666')

    console.dir(Object.prototype)
    console.dir(Object.prototype.constructor === Object)
   

    // JavaScript 默认并不会复制对象的属性,相反,JavaScript 只是在两个对象之间创建一个关联,这样,一个对象就可以通过委托访问另一个对象的属性和函数,所以与其叫继承,委托的说法反而更准确些
</script>

    console.dir(Function.__proto__ === Function.prototype)

    console.dir(Function.prototype === Function.prototype)

    console.dir(Object.__proto__ === Function.prototype)

    console.dir(Function.prototype.__proto__ === Object.prototype)

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

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值