美文网首页
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