• 解读JavaScript原型链


    var F = function(){};
    
    F.prototype.a = function(){};
    Object.prototype.b = function(){};
    Function.prototype.c = function(){};
    
    var f = new F();
    f.name = '111';
    
    console.log(f)
    

     打印f结果:实例化自构造函数F的对象,f有一个私有的name属性

     

      展开对象

    对象 f 下有 name 属性和 _proto_ 属性,所有对象在创建时都有一个不公开的 _proto_ 内置属性,这个属性的值就是f的构造原型对象,在这里对象 f 实例自构造函数F,函数对象F的原型为 F.prototype,即 f._proto_ = F.prototype

    var F = function(){};
    		
    F.prototype.a = function(){};
    Object.prototype.b = function(){};
    Function.prototype.c = function(){};
    		
    var f = new F();
    f.name = '111';
    		
    console.log(f)
    		
    console.log(F.prototype)
    

      

     在JavaScript语言中,constructor 属性是专门为 function 而设计的,它存在于每一个构造函数的原型对象的属性中(F.prototype.constructor );这个 constructor 保存了指向构造函数的一个引用。

     在此例中,F.prototype.constructor 指向函数 F;每一个实例都继承原型上的属性和方法,即 F.prototype.constructor = f.constructor = F

     *区分prototype和_proto_

    prototype是挂载在构造函数上的原型对象

    _proto_是所有对象在创建时都有的内置属性,这个属性的值是构造该对象的函数上挂载的原型

    如上例 f._proto_ = F.prototype

  • 相关阅读:
    mysql字节乱码问题之解决方法
    tracert nbtstat nslookup arp指令用法及示例
    Java ThreadLocal示例及使用方法总结
    C# Undo Redo
    自定义过滤器
    C#粘贴复制数据库中的内容
    分布式数据同步
    创建路径(c#)动态分段
    构建网络数据集(c#)
    创建一个栅格图层
  • 原文地址:https://www.cnblogs.com/xiaomingSun/p/7027889.html
Copyright © 2020-2023  润新知