3 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
我認(rèn)為您正在尋找該with聲明,它完全符合您的要求:
const vegetableColors = {corn: 'yellow', peas: 'green'};
with (vegetableColors) {
console.log(corn);// yellow
console.log(peas);// green
}
但是,有充分的理由不建議使用(在嚴(yán)格模式下,其中包括ES6模塊)。
將所有屬性分解為當(dāng)前范圍
您無法在ES6 1中使用。那是一件好事。明確說明要引入的變量:
const {corn, peas} = vegetableColors;
另外,您可以使用擴(kuò)展全局對(duì)象Object.assign(global, vegetableColors)以將它們置于全局范圍內(nèi),但實(shí)際上,這比with聲明要糟糕。
1:…雖然我不知道ES7中是否有允許這種事情的草案,但我可以告訴您,任何提案都會(huì)被TC否決:-)

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
我認(rèn)為您正在尋找:
const {corn, peas} = vegetableColors;
依靠Babel的REPL直播
如果Pointy是對(duì)的,那么您在不知道cornand 的名稱的情況下詢問如何執(zhí)行此操作peas,則無法進(jìn)行銷毀分配。
您只能使用循環(huán)在全局范圍內(nèi)進(jìn)行操作,但是我確定您不想在全局范圍內(nèi)執(zhí)行此操作。不過,以防萬一:
// I'm sure you don't really want this, just being thorough
Object.keys(vegetableColors).forEach((key) => {
Object.defineProperty(this, key, {
value: vegetableColors[key]
});
});
(enumerable: true如果希望這些偽常量可枚舉,則在該處拋出。)
這在全局范圍內(nèi)有效,因?yàn)閠his引用了全局對(duì)象。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
我仍然認(rèn)為這將是一個(gè)有用的功能,但是我可以看到論點(diǎn)的另一面。在任何情況下,with
它都不是“解決方案”的imo,因?yàn)楝F(xiàn)在您必須包裝整個(gè)模塊with
并添加級(jí)別縮進(jìn),這比在每個(gè)函數(shù)調(diào)用前添加對(duì)象名稱或在頂部使用名稱導(dǎo)入所有內(nèi)容都更糟糕。破壞。
添加回答
舉報(bào)