function A() {}
const a = new A()
new
到底做了什么呢?
a = {}; a.__proto__ = A.prototype
-
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
}
*/
参考:
网友评论