zoukankan      html  css  js  c++  java
  • 解读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

  • 相关阅读:
    java基础知识——7.断点调试与数据加密
    Hibernate最基础配置的记忆方式
    Redis集群命令
    VMware Workstation下centos的使用
    Redis入门
    Shell脚本
    使用Java遇到的问题
    使用Linux
    压缩包安装MySQL服务
    安装windows+ubuntu双系统
  • 原文地址:https://www.cnblogs.com/xiaomingSun/p/7027889.html
Copyright © 2011-2022 走看看