• prototype和__proto__的区别


    1.每个对象都具有一个名为__proto__的属性;

    2.每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就是一个对象(JS中函数同样是对象),所以prototype同样带有__proto__属性);

    3.每个对象的__proto__属性指向自身构造函数的prototype;

    // 创造一个函数Fun,这个函数由Function这个构造函数生成
    function Fun(){} 
    // 这个函数由Fn生成,这样Function,Fun,fn就构成了原型链
    var fn = new Fun()

    // fn的__proto__指向其构造函数Fun的prototype
    console.log(fn.__proto__===Fun.prototype); // true
    // 类似上面的
    console.log(Fun.__proto__===Function.prototype);//true
    // Function的__proto__指向其构造函数也就是自己本身的prototype
    console.log(Function.__proto__===Function.prototype);//true
    // Function.prototype(也是一个对象)的__proto__指向其构造函数Object的prototype
    console.log(Function.prototype.__proto__===Object.prototype);//true
    // 类似上面的
    console.log(Fun.prototype.__proto__===Object.prototype);//true
    // Object作为一个构造函数,他的__proto__也是指向Function.prototype
    console.log(Object.__proto__===Function.prototype);
    // Object.prototype作为一切的源头,他的__proto__是null
    console.log(Object.prototype.__proto__===null);//true

    constructor在原型链中,是作为对象prototypr的一个属性存在的,它指向构造函数

    var obj = {}
    console.log(obj.__proto__===Function.prototype);//false
    console.log(obj.__proto__===Object.prototype);//true
    // obj的构造函数直接指向Object
    console.log(obj.__proto__.constructor===Object);//true
    // Object的__proto__指向Function的prototype
    console.log(obj.__proto__.constructor.__proto__===Function.prototype);//true
    // Function.prototype.__proto__指向Object的prototype
    console.log(obj.__proto__.constructor.__proto__.__proto__===Object.prototype);//true
    // Object.prototype.__proto__为空
    console.log(obj.__proto__.constructor.__proto__.__proto__.__proto__===null);//true
    console.log(obj.__proto__.constructor.__proto__.__proto__.constructor.__proto__===Function.prototype);//true

  • 相关阅读:
    python中的os
    文件系统的简单操作
    文件与目录管理
    用户与用户组管理
    基础命令的操作
    linux开机流程
    ansible源码安装、普通用户实现批量控制
    python3中得数据类型
    判断一个字符串中得大写字母,小写字母,数字出现得次数
    Elasticsearch 如何安全加固
  • 原文地址:https://www.cnblogs.com/haoqirui/p/13699907.html
Copyright © 2020-2023  润新知