• js继承与原型链


    JavaScript是一种灵活的语言,兼容并包含面向对象风格,函数式 风格等编程风格。面向对象有三大特性和六大原则

    原型对象链:

    js内建的继承方法被称为原型对象链,又称为原型对象继承。对于一个对象,因为它继承了原型对象的属性,所以它可以访问到这些属性。同理,原型对象也是一个对象,他也有自己的原型对象,因此也可以继承它的原型对象的属性

     ,

    这就是原型继承链:对象继承其原型对象,而原型对象继承它的原型对象,以此类推。

    对象继承:

    使用对象字面量形式创建对象时,会隐式指定 Object.prototype为新对象的[[Prototype]]。使用Object.create()方式创建对象时,可以显式指定新对象的[[Prototype]]。该方法介绍两个参数:第一个为新对象的[[Prototype]],第二个参数描述了新对象的属性,格式如在Object.defineProperties()中使用的一样。

    var rectangle = {
        sizeType: '四边形',
        getSize: function() {
            console.log(this.sizeType)
        }
    }
    
    var square = Object.create(rectangle, {
        sizeType: { value: '正方形' }
    })
    
    rectangle.getSize()   // "四边形"
    square.getSize()      // "正方形"
    
    console.log(rectangle.hasOwnProperty('getSize'))
    console.log(rectangle.isPrototypeOf(square))
    console.log(square.hasOwnProperty('getSize'))
    console.log('getSize' in square)
    console.log(square.__proto__ === rectangle)
    console.log(square.__proto__.__proto__ == Object.prototype)

    对象square 继承自对象rectangle,也就继承了rectangle 的sizeType属性和getSize()方法,有通过重写sizeType属性定义了一个自有属性,隐藏并替代了原型对象中的同名属性。所有rectangle.getSize()输出 四边形 而square.getSize()输出 正方形

    在访问一个对象的时候,JavaScript引擎汇之星一个受伤过程,如果在对象实例上发现该属性,该属性就会被使用,如果没有发现则搜索其原型对象[[Prototype]],如果仍然没有发信啊,则继续搜索该原型对象上的原型对象[[Prototype]] 直到继承链顶端,顶端通常是一个Object.orototype 其[[Prototype]] 为null  。这就是原型链的查找

  • 相关阅读:
    python代码-实现对文件内容的哈希
    python底层的一些知识
    编码-理解
    编码的理论知识-小结
    时间同步:Linux同步国家授时中心的时间
    ASCII码表和base64码表、GBK编码表
    python说明编码和解解码
    python基础-判断一年中的第几天
    VM12及CentOS-6.10的安装
    Linux网卡配置
  • 原文地址:https://www.cnblogs.com/webcyh/p/11313617.html
Copyright © 2020-2023  润新知