美文网首页
JavaScript(new 运算符)

JavaScript(new 运算符)

作者: JetLu | 来源:发表于2016-08-15 11:49 被阅读27次
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
}
*/

参考:


相关文章

网友评论

      本文标题:JavaScript(new 运算符)

      本文链接:https://www.haomeiwen.com/subject/etjusttx.html