zoukankan      html  css  js  c++  java
  • 前端知识总结--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
  • 相关阅读:
    第一周学习总结
    lhgdialog窗口插件
    validate验证
    jxl自己写的例子
    jxl导入/导出excel
    struts2文件上传
    struts2基于注解的文件下载
    学校操场的印象
    我的开源项目:JPEG分析器
    我的开源项目:TS封装格式分析器
  • 原文地址:https://www.cnblogs.com/fanlu/p/10795936.html
Copyright © 2011-2022 走看看