zoukankan      html  css  js  c++  java
  • __proto__,prototype,constructor

    帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

    构造器,构造函数:

    一个普通函数用于创建一类对象时,就被称作构造函数。

    构造器满足条件:

    1.在函数内部对新对象(this)的属性进行 设置,通常是添加属性和方法
    2.构造函数可以包含返回语句(不推荐)但必须是this,或其他非对象类型的值

    new操作符来调用一个构造函数的过程:

    1. 创建一个空对象                                               var obj={};
    2.将这个空对象的_prop_成员指向构造函数对象的prototype成员对象        obj._prop_=CO.prototype
    3.将构造函数的作用域赋值给新对象  this只想obj	                      CO.call(obj)
    4.返回新对象obj .                                               return obj;

    __proto__(隐式原型)

    对象:一个对象的隐式原型指向 构造该函数的构造函数的原型
    方法:不仅有proto属性还有 原型属性(prototype)

    __proto__ 属性是Object.prototype 一个简单的访问器属性,其中包含get和set的方法。
    任何一个__proto__的存储属性都继承于Object.prototype,但一个访问属性如果不是来源于Object.prototype就不拥有.__proto__属性。

    prototype(prototype属性是函数所独有的)

    指向一个对象,这个对象包含所有实例共享的属性和方法

    constructor

    原型对象又一个属性,叫做constructor,这个属性包含一个指针,指回原构造函数

    function Foo(){console.log("Foo")}
    let f1 = new Foo()
    
    f1.__proto__ ==  Foo.prototype //{constructor:{...};__proto__:Object}
    
    f1.constructor    // Foo()
    Foo.constructor   // Function()
    
    Foo.__proto__ == Function.prototype //f() {[native code]

     

  • 相关阅读:
    Windows_10 系统封装
    leetcode-75 颜色分类
    leetcode-922 按奇偶排序数组 II
    leetcode-905 按奇偶数排序
    UVA-10827 环面上的最大子矩阵和
    leetcode918 环形最大子数组
    leetcode-85 最大矩形
    leetcode-84 柱状图中的最大矩形
    leetcode-221 最大正方形
    leetcode-713 乘积小于k的数组
  • 原文地址:https://www.cnblogs.com/wpp12345/p/10436831.html
Copyright © 2011-2022 走看看