prototype, __proto__ , constructor 深入了解

89 阅读1分钟

__ proto __

__ proto __ 是由两个双下划线组成的, __ proto __ 在 ES 标准中名字为 [[prototype]] 具体实现是由浏览器自己实现的, 谷歌浏览器的实现就是将 [[prototype]] 命名为 __ proto __ ,名字是否所差异, 但是功能是一样的。 可以通过以下方式检测引擎是否支持这个属性, Object.getPrototypeOf({__proto__:null}) === null

从代码出发

    function foo(){
       console.log("你好")
    }
    let f1 = new foo()

以上代码表示创建一个构造函数 Foo(),并用 new 关键字实例化该构造函数得到一个实例化对象 f1, 这里稍微补充一下 new 操作符将函数作为构造器进行调用的过程。

new 创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例, 

new constructor ([arguments])

constructor: 一个指定对象实例类型的类或者函数
aruguments : 一个用于被 constructor 调用的参数列表。


prototype是函数才有的属性