new.target属性_你可能不知道的 new.target

访客3年前黑客资讯948

new 是组织函数天生实例的下令, ES6为 new 下令引入了 new.target属性。这个属性用于确定组织函数是怎么挪用的。在组织函数中, 若是一个组织函数不是通过 new操作符挪用的, new.target会返回 undefined。


使用场景

  • 若是一个组织函数不通过 new 下令天生实例, 就报错提醒

es5中是这样做的:

    function Shape(options) {
        if (this instanceof Shape) {
            this.options = options
        } else {
            // 要么手动给它建立一个实例并返回
            // return new Shape(options)
            
            // 要么提醒
            throw new Error('Shape 组织函数必须使用 new 操作符')
        }
    }

es6中可以这样做:

    function Shape(options) {
        // if (new.target !== 'undefined') {}  必须要在 constructor中使用 new.target, 在这里判断会报错
        
        constructor(options) {
            if (new.target !== 'undefined') {
                this.options = options
            } else {
                throw new Error('必须使用 new 操作符')
            }
        }
    }

以上代码通过 new.target 属性判断返回的是不是undefined即可知道这个组织函数是不是通过 new 操作符挪用

  • 一个组织函数只能用于子类继续, 自身不能 new

new.target这个属性,当子类继续父类会返回子类的组织函数名称

    class Parent {
        constructor() {
            console.log(new.target)
        }
    }
    
    class Child extends Parent {
        constructor() {
            super()
        }
    }
    
    // Child

以上代码 Child子类继续父类, 那么父类组织函数中的 new.target 是子类组织函数的名称。

划定组织函数只能用于继续

    class Zoo {
        constructor() {
            if (new.target === Zoo) throw new Error('Zoo组织函数只能用于子类继续')
        }
    }
    
    const zoo = new Zoo()   // 报错
    
    class Dog extends Zoo {
       constructor() {
           super()
       } 
    }
    
    const dog = new Dog()  // 不报错

相关文章

三生三世枕上书是哪三世 三生三世枕上书是三生三世十里桃花的续集吗

三生三世枕上书是哪三世 三生三世枕上书是三生三世十里桃花的续集吗

《三生三世枕上书》总算传出了上映信息,1月22日开播,《枕上书》是《十里桃花》的姐妹篇,叙述了三世三世的姻缘,是以帝君和凤九为主人公,那麼,三生三世枕奏疏是哪三世?三生三世枕奏疏是三生三世十里桃花运的...

淘宝上怎么买客户资料

努力做宣传!多参与淘宝官方活动,很快就拥有大量客户呀! 没有这个功能,只有下载订单,上面有客户资料 这需要专业的数据统计软件,卖家服务里有卖这类软件的!不过你是淘宝卖家吗? 客户资源是经过自己努力而赢...

散装英语是什么梗 散装英语梗的出处是什么

散装英语是什么梗 散装英语梗的出处是什么

在网络上常常能见到许多的梗。散装英语是近期出現的一个梗。日常生活我们在闲聊时也要说散装英语。那麼散装英语是什么梗 散装英语梗的出處是啥。领着下有关详细介绍。 散装英语是什么梗 中英参杂,...

盗取别人聊天记录的软件(远程查看对象微信聊天软件)

窃取他人微信聊天记录的手机软件(远程控制查询目标微信聊天手机软件) 安再贤想公布微信聊天记录,却被胡惠山的光的速度扇了一巴掌:我压根无需这一手机软件 文/一封情书 安再贤和胡惠山的离异仍在再次发...

Steam喜+1限时领取冒险解密游戏《The Search》

《The Search》是一款由Jason Godbey制作的冒险解谜游戏,发行于17年4月,Steam商店售价18米,游戏不支持简体中文,感兴趣的朋友可以领取一下! 获取方式:在Stea...

娃娃菜怎么做好吃,娃娃菜的家常做法

娃娃菜怎么做好吃,娃娃菜的家常做法

娃娃菜怎么做好吃,娃娃菜的家常做法。     蒜蓉粉丝娃娃菜 简单方便很适合上班族,虽然是蒸菜但是味道一点也不寡淡,非常下饭,美味又致简。 蒜蓉粉丝娃娃菜...