国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6 Symbol ,對象匿名(anonymous)屬性實現(xiàn)

JowayYoung / 616人閱讀

摘要:在運行時環(huán)境中,通過調(diào)用函數(shù)創(chuàng)建值,該函數(shù)動態(tài)生成匿名的唯一值。創(chuàng)建和使用值的唯一創(chuàng)建方法,是通過調(diào)用函數(shù)來返回,不支持操作。共享體系提供了一個全局注冊表,用于在大文件或多文件代碼中追蹤值。

Symbol由來

Symbol是ES6引入的新類型,所以在ES5的基礎(chǔ)上,JS就有了字符串(string)、數(shù)字型(number)、布爾(bool)、null、undefined和Symbol共六種基本類型(bigint ES2016 添加)。

In JavaScript, Symbol is a primitive value.
Symbol是一種原始數(shù)據(jù)類型
什么是原始數(shù)據(jù)類型
A value having the data type "symbol" can be referred to as a "symbol value." In the JavaScript run-time environment, a symbol value is created by invoking the function Symbol, which dynamically produces an anonymous, unique value. A symbol may be used as an object property.
具有Symbol數(shù)據(jù)類型的值被稱為"Symbol"值。在JavaScript運行時環(huán)境中,通過調(diào)用函數(shù)Symbol創(chuàng)建Symbol值,該函數(shù)動態(tài)生成匿名唯一值。
Symbol can have an optional description, but for debugging purposes only.
MDN Symbol
該數(shù)據(jù)類型通常被用作一個對象屬性的鍵值——當(dāng)你想讓它是私有的時候。例如,symbol 類型的鍵存在于各種內(nèi)置的 JavaScript 對象中。同樣,自定義類也可以這樣創(chuàng)建私有成員。symbol 數(shù)據(jù)類型具有非常明確的目的,并且因為其功能性單一的優(yōu)點而突出;一個 symbol 實例可以被賦值到一個左值變量,還可以通過標(biāo)識符檢查類型,這就是它的全部特性。不能對該類型實例使用其他操作符(將“Symbol”類型的實例與 “Number” 類型的實例對比,例如整數(shù) 42,該實例就具有將值與其他類型的值進行比較或組合的運算符)。
創(chuàng)建和使用Symbol

Symbol值的唯一創(chuàng)建方法,是通過調(diào)用Symbol()函數(shù)來返回,不支持new操作。
Symbol接受一個可選參數(shù),可以添加一段文本描述,但這段描述不可用于屬性訪問。

let firstName = Symbol("first name");
let persion = {};
person[firstName] = "Tom";
console.log("first name" in person); // false
console.log(persion[firstName]); // "Tom"
console.log(firstName); // "Symbol(first name)"

Symbol的描述被存儲在內(nèi)部的[[Description]]屬性中,只有當(dāng)調(diào)用Symbol的toString方法才可以讀取這個屬性,但不能直接在代碼里訪問[[Description]]。
所有使用計算屬性名的地方,都可以使用Symbol。

let firstName = Symbol("first name");

let person = {
    [firstName] : "Tom" 
}

Object.defineProperty(person, firstName, { writable: false});

let lastName = Symbol("last name");

Object.defineProperties(person, {
    [lastName]: {
        value: "Lee",
        writable: false
    }
});

console.log(person[firstName]); // Tome
console.log(person[lastName]); // Lee

const propertyNames = Object.getOwnPropertyNames(person);
console.log(propertyNames); // []

const propertySymbols = Object.getOwnPropertySymbols(person);

console.log(propertySymbols); // [Symbol(first name), Symbol(last name)]
共享體系

Symbol提供了一個全局注冊表,用于在大文件或多文件代碼中追蹤Symbol值。
如果想創(chuàng)建一個可共享的Symbol,需要使用Symbol.for方法。它只接受一個參數(shù),也就是即將創(chuàng)建的Symbol的字符串標(biāo)識,這個參數(shù)也被用作Symbol的描述。

let uid = Symbol.for("uid");
let obj = {};
obj[uid] = "12345";
console.log(obj[uid]); // "12345"
console.log(uid); // "Symbol(uid)"
console.log(Symbol.forKey(uid)); // "uid"

Symbol.for方法首先在全局注冊表中搜索鍵值為"uid"的Symbo值,如果存在,直接返回已有的Symbol,否則,創(chuàng)建一個新的Symbol,并使用這個鍵在Symbol全局注冊表中注冊,隨即返回新創(chuàng)建的Symbol。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/105629.html

相關(guān)文章

  • 學(xué)習(xí)筆記——JavaScript 編碼規(guī)范

    類型 基本類型 - string - number - boolean - null - undefined - symbol(表示獨一無二的值,使用時需要注意瀏覽器是否支持) //example const symbol1 = Symbol(); const symbol2 = Symbol(42); const symbol3 = Symbol(...

    lufficc 評論0 收藏0
  • ES6精華:函數(shù)擴展

    摘要:在函數(shù)方面的擴展比較豐富也很實用,本篇概括了這中的精華知識。所以無法成為構(gòu)造函數(shù),不能使用操作符。參數(shù)將擴展運算符作用于參數(shù),即為參數(shù)。聲明式,直接為函數(shù)名。通過構(gòu)造函數(shù)生成的,為。函數(shù)的屬性,在其描述對象的屬性上,為函數(shù)名。 ES6在函數(shù)方面的擴展比較豐富也很實用,本篇概括了這中的精華知識。 1 箭頭函數(shù) 箭頭函數(shù)是ES6中定義函數(shù)的新形式。 新形式不僅簡化了定義方式,更為函數(shù)本身...

    lansheng228 評論0 收藏0
  • ECMAScript6

    摘要:返回布爾值標(biāo)簽?zāi)0蹇梢跃o跟一個函數(shù)名后邊,該函數(shù)將被調(diào)用來處理這個模板字符串。其它情況下返回值為在內(nèi)部,整數(shù)和浮點數(shù)使用同樣的存儲方法,所以和被視為同一個值。 簡介 ES6目標(biāo),讓JavaScript變成一個企業(yè)級的開發(fā)語言,不僅僅限制與前端頁面的腳本語言。 標(biāo)準(zhǔn)(Standard): 用于定義與其他事物區(qū)別的一套規(guī)則 實現(xiàn)(Implementation): 某個標(biāo)準(zhǔn)的具體實施/真實實...

    MSchumi 評論0 收藏0
  • ES6入門之對象的擴展

    摘要:屬性的簡潔表示法在中允許直接寫入變量和函數(shù),作為對象的屬性和方法,使得代碼的書寫更為簡潔。循環(huán)遍歷對象自身的和繼承的可枚舉屬性不含屬性。返回一個數(shù)組,包含對象自身的所有屬性的鍵名。 showImg(https://segmentfault.com/img/remote/1460000019259004?w=1282&h=1920); 1. 屬性的簡潔表示法 在ES6中 允許直接寫入變量...

    AWang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<