JavaScript(new 运算符)

2016-08-15  本文已影响27人  JetLu
function A() {}
const a = new A()

new 到底做了什么呢?


  1. a = {}; a.__proto__ = A.prototype
  2. a = A.call(a)这里需要解释一下,如果构造函数里没有return语句或者return的不是object,那么会默认返回构造函数内部的this,与普通函数不同的地方。

2016/08/23


function A() {}
console.log(A.prototype.constructor === A) //true

我一直没明白,为何上面会输出true
好吧,反正我是真得没弄明白,也许JavaScript就是这样设计的呢?

我就按照下面的解释来麻醉自己了:

function A() {}
a = new A()
/*
此时:
a.constructor == A 
a是没有constructor属性的,其实是a.__proto__.constructor == A
而a.__proto__等同于A.prototype
所以我推测是JavaScript为了实现上述等式,当我们定义一个函数的时候,内部进行了下列操作:
function A() {}
A.prototype = {
    constructor: A
}
*/

参考:


上一篇下一篇

猜你喜欢

热点阅读