第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在使用“新”運(yùn)算符創(chuàng)建對象時,我們可以省略括號嗎?

在使用“新”運(yùn)算符創(chuàng)建對象時,我們可以省略括號嗎?

慕尼黑8549860 2019-06-15 18:00:58
在使用“新”運(yùn)算符創(chuàng)建對象時,我們可以省略括號嗎?我看到對象是這樣創(chuàng)建的:const obj = new Foo;但我認(rèn)為在創(chuàng)建對象時,括號不是可選的:const obj = new Foo();在ECMAScript標(biāo)準(zhǔn)中創(chuàng)建對象的前一種方法是否有效和定義?前一種創(chuàng)建對象的方式和后一種創(chuàng)建對象的方式有什么不同嗎?一個比另一個更好嗎?
查看完整描述

3 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個贊

引文大衛(wèi)·弗拉納根1:

作為特例,對于new如果函數(shù)調(diào)用中沒有參數(shù),JavaScript只允許省略括號,從而簡化了語法。下面是使用new操作員:

o = new Object;  // Optional parenthesis omitted hered = new Date();  ...

就我個人而言,我總是使用括號,即使構(gòu)造函數(shù)沒有參數(shù)。

此外,賈林特如果省略括號可能會傷害你的感情。報(bào)告Missing '()' invoking a constructor,而且該工具似乎沒有允許省略括號的選項(xiàng)。


1大衛(wèi)·弗拉納根:JavaScript最終指南:第4版(第75頁)


查看完整回答
反對 回復(fù) 2019-06-15
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊

兩者之間存在差異:

  • new Date().toString()

    工作正常,并返回當(dāng)前日期。
  • new Date.toString()

    拋出“

    TypeError:Date.toString不是構(gòu)造函數(shù)"

這是因?yàn)?/trans>new Date()new Date有不同的優(yōu)先權(quán)。根據(jù)MDN我們感興趣的JavaScript操作符優(yōu)先級表的部分如下所示:

╔════════════╦═════════════════════════════╦═══════════════╦═════════════╗

║ Precedence ║        Operator type        ║ Associativity ║  Operators  ║

╠════════════╬═════════════════════════════╬═══════════════╬═════════════╣

║     18     ║ Member Access               ║ left-to-right ║ … . …       ║

║            ║ Computed Member Access      ║ left-to-right ║  … [ … ]    ║

║            ║ new (with argument list)    ║ n/a           ║ new … ( … ) ║

╠════════════╬═════════════════════════════╬═══════════════╬═════════════╣

║     17     ║ Function Call               ║ left-to-right ║ … ( … )     ║

║            ║ new (without argument list) ║ right-to-left ║ new …       ║

╚════════════╩═════════════════════════════╩═══════════════╩═════════════╝



從本表中可以看出:
  1. new Foo()new Foo

    new Foo()具有與.操作者

    new Foo具有較低優(yōu)先級的級別。.操作者

    new Date().toString()因?yàn)樗挠?jì)算值為(new Date()).toString()

    new Date.toString()拋出“TypeError:Date.toString不是構(gòu)造函數(shù)“因?yàn)?/trans>.new Date(并高于“函數(shù)調(diào)用”),表達(dá)式的計(jì)算結(jié)果為(new (Date.toString))()

    同樣的邏輯可以應(yīng)用于… [ … ]接線員。

  2. new Foo從右到左結(jié)合性new Foo()“聯(lián)想性”不適用。我認(rèn)為在實(shí)踐中這沒有任何區(qū)別。有關(guān)更多信息,請參見這,這個所以問題


一個比另一個更好嗎?

知道了這一切,我們可以假設(shè)new Foo()是首選。


查看完整回答
反對 回復(fù) 2019-06-15
?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊

我不認(rèn)為當(dāng)你使用“新”操作符時沒有任何區(qū)別。要注意養(yǎng)成這種習(xí)慣,因?yàn)檫@兩行代碼并不相同:

var someVar = myFunc; // this assigns the function myFunc to someVarvar someOtherVar = myFunc(); 
// this executes myFunc and assigns the returned value to someOtherVar


查看完整回答
反對 回復(fù) 2019-06-15
  • 3 回答
  • 0 關(guān)注
  • 502 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號