zoukankan      html  css  js  c++  java
  • js中的对象 函数 原型

    // 关于 Function Object 和 proto prototype
    // 1.每一个对象实例都有一个 proto 属性,这个属性就是指向 对象构造函数的原型.
    let b = new Function();
    console.log(b.proto === Function.prototype); // true
    console.log(Function.prototype); // [Function]
    console.log(Function.prototype.prototype); // undefined

    // 2. Function 是 Object, Object 也是 Function
    console.log(Function instanceof Object); // true
    console.log(Object instanceof Function); // true
    console.log(b instanceof Object); // true
    console.log(b instanceof Function); // true

    // Function 和 Object 区别
    // 1.由 Function 创造出来的实例对象,既是 Object 又是 Function
    // 2.由 Object 创造出来的实例对象, 是 Object,但不是 Function
    let a = new Object();
    console.log(a instanceof Object); // true
    console.log(a instanceof Function); // false

    //
    console.log(a.proto === Object.prototype); // true
    console.log(Object.prototype); // {}
    console.log(Object.prototype.prototype); // undefined

    // 如何形成原型链?
    class A{
    constructor(){
    this.name = 'a';
    }
    sayHi(){
    console.log('this is a say hi!');
    }
    }
    class B extends A{
    constructor(){
    super();
    this.age = 2;
    }
    }

    console.log(A.prototype); // {}
    console.log(B.prototype); // {}

    // 下面演示了 原型链
    // B->A->Object
    let obj = new B();
    console.log(obj.proto === B.prototype); // true;
    console.log(B.prototype.proto === A.prototype); // true
    console.log(A.prototype.proto === Object.prototype);
    console.log(Object.prototype.proto); // null

    console.log(A.proto === Function.prototype); // true
    console.log(B.proto === Function.prototype); // false
    console.log(B.proto.constructor); // [Function: Function]

    // 只有 通过 new A(); 创建的对象的 proto 才指向 A.prototype

    // 疑问: B.proto 到底指向哪?
    console.log(B.proto === A.prototype); // false

  • 相关阅读:
    最好的在线打字练习网站
    input 的 type 等于 file
    windows 删除文件或文件夹
    nvm 管理 node 版本
    github 的 fork 取消功能
    window cmd 命令行下创建文件夹和文件
    17_10_11 Redis 指令
    17_10_11 Mac 上的brew 安装指令
    17_10_11 运算符&,&&,>> 和 >>>
    17_10_10 乱码问题总结
  • 原文地址:https://www.cnblogs.com/daihanlong/p/9823945.html
Copyright © 2011-2022 走看看