• 前端知识总结--js原型链


    js的原型链听着比较深奥,看着容易晕,梳理一下还是比较容易懂的

    (先简单写下,后续有时间再整理)

    简而言之

    原型链:就是js的对象与对象之间,通过原型组成建立的层层关系,构成了整个链条,称之为原型链  (个人理解,欢迎交流)

    对象

    js中一切皆对象,我们看到的变量、函数、类型,都是顶级对象Object的实例,也就是说他们继承自Object,这种关系就体现在原型链上。

    每个对象都有对应的构造函数,就用最简单的变量举例:

    var a = 1;
    console.log(typeof a); //number
    console.log(a.__proto__);     //Number {0, constructor: ƒ, toExponential: ƒ, toFixed: ƒ, toPrecision: ƒ, …}
    console.log(Number.prototype);  //Number {0, constructor: ƒ, toExponential: ƒ, toFixed: ƒ, toPrecision: ƒ, …}

    你会发现最后2行输出是一致的,怎么回事呢?因为变量a赋值后为Number类型,也就是实例化了Number函数,实例化后会自动生成一个隐形的属性【__proto__】指向了父级对象的【prototype】属性

    原型

    上例中的 prototype 与 __proto__ 存在于js中的各个对象和函数中,就构成了原型链

    • 对象没有 prototype 属性,只有函数有 prototype 原型对象
    • 对象的 __proto__ 属性指向构造函数的 prototype 原型对象
    • 原型对象也是对象,也有__proto__ 属性
    • 直到指向Object.prototype后,到达顶级,Object.prototype.__proto__ 为 null
  • 相关阅读:
    P12 向量组03--极大线性无关组
    超导体
    Matlab中disp、fprintf和sprintf有什么区别?
    点击word页面自动弹出信息检索很烦人
    Postman 官方中文版 v7.25.3
    无法为更新定位行。一些值可能已在最后一次读取后已更改解决办法
    Everything文件查找工具
    Delphi的DataSource事件
    Delphi中inherited问题
    delphi窗体继承
  • 原文地址:https://www.cnblogs.com/fanlu/p/10795936.html
Copyright © 2020-2023  润新知