摘要:一定義類型是新的原始數據類型,表示獨一無二的值,其他的原始數據類型還有,屬于復雜數據類型。三值作為對象值作為屬性名時不能使用點運算定義屬性時,必須放在方括號內,與普通鍵值進行區分。值可顯示地轉換成字符串。可以顯示或隱式轉成,卻不能轉成數值。
一、定義
symbol類型是新的原始數據類型,表示獨一無二的值,其他的原始數據類型還有Number,String,Boolean,Null,Undefined;Object屬于復雜數據類型。
二、參數
1、Symbol函數接受字符串作為參數,控制臺輸出時,比較容易區分。
2、Symbol函數的參數僅表示Symbol值得描述,相同的參數返回值也不一樣
var a = Symbol("a"); var b = Symbol("a"); a === b //false
3、Symbol.for()可以生成同一個Symbol值。
請輸入代碼
var a = Symbol.for("a"); var b = Symbol.for("a"); a === b //true
Symbol.for()生成的名字是全局環境的,可以在不同的iframe中給取到值。
三、Symbol值作為對象
1、Symbol值作為屬性名時不能使用點運算
2、定義屬性時,必須放在方括號內,與普通鍵值進行區分。
var a = Symbol("a"); var obj = { a: "normal key", [a]: "symbol key" }
3、Symbol值定義的屬性屬于公開屬性,普通方法無法遍歷。
//如上例 Obj.getOwnProperty() //["a"] Obj.getOwnPropertySymbols() //[Symbol("a")] Refelect.ownKeys() // ["a", Symbol("a")]
4、利用Symbol的特性可定義內部私有屬性或方法
function getObj (obj) { let privateKey = symbol("privateKey"), objCopy = ...obj || {}; objCopy[privateKey] = function privateFunc () { console.log("privateFunc ") } return objCopy; } let newObj = getObj(); newObj[privateKey] // 報錯,外部無法獲取到privateKey的值 newObj[symbol("privateKey")] //undefined,此時的symbol已經變成新的symbol值
三、注意點
1、Symbol值不能進行隱式轉換,因此它與其他類型的值進行運算,會報錯。
2、Symbol值可顯示地轉換成字符串。
var a = Symbol("a"); a.toString() // "Symbol(a)"
3、可以顯示或隱式轉成Boolen,卻不能轉成數值。
var a = Symbol("a"); Boolean(a) //true if (a) { console.log(a); } //Symbol("a") 打印出來地Symbol值會帶上參數,便于區分
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109665.html
摘要:另外,本文版權歸原作者所有,翻譯僅用于學習。因為值具有唯一性,這就意味著作為對象的屬性名時,可以保證不會出現同名的屬性。不過,這個提議在中被拒絕了,也許之后的版本會再考慮。事實上,與都有語法解決構造器中屬性名重復的問題。 譯者按: 這篇博客將介紹ES6新增的Object.assign()方法。 原文: ECMAScript 6: merging objects via Object...
摘要:實現原理創建一個指針對象,指向當前數據結構的起始位置。也就是說,遍歷器對象本質上,就是一個指針對象。具體來說,就是返回一個包含和兩個屬性的對象。接口部署在對象的屬性上可以調用這個屬性,就得到遍歷器對象。 Iterator實現原理 創建一個指針對象,指向當前數據結構的起始位置。也就是說,遍歷器對象本質上,就是一個指針對象。 第一次調用指針對象的next方法,可以將指針指向數據結構的第一...
摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調用函數將其轉化為字符串對于右側的,首先會進行顯式類型轉換,將其轉化為。 JavaScript 運算符規則與隱式類型轉換詳解 從屬于筆者的現代 JavaScript 開發:語法基礎與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規則與隱式類型轉換;本文中涉及的參考資料全部聲明在了JavaSc...
摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調用函數將其轉化為字符串對于右側的,首先會進行顯式類型轉換,將其轉化為。 JavaScript 運算符規則與隱式類型轉換詳解 從屬于筆者的現代 JavaScript 開發:語法基礎與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規則與隱式類型轉換;本文中涉及的參考資料全部聲明在了JavaSc...
摘要:變量聲明與賦值值傳遞淺拷貝與深拷貝詳解歸納于筆者的現代開發語法基礎與實踐技巧系列文章。變量聲明在中,基本的變量聲明可以用方式允許省略,直接對未聲明的變量賦值。按值傳遞中函數的形參是被調用時所傳實參的副本。 ES6 變量聲明與賦值:值傳遞、淺拷貝與深拷貝詳解歸納于筆者的現代 JavaScript 開發:語法基礎與實踐技巧系列文章。本文首先介紹 ES6 中常用的三種變量聲明方式,然后討論了...
閱讀 3241·2021-11-22 12:07
閱讀 1882·2021-10-12 10:11
閱讀 1046·2019-08-30 15:44
閱讀 2944·2019-08-30 12:45
閱讀 2193·2019-08-29 16:41
閱讀 1641·2019-08-29 16:35
閱讀 2629·2019-08-29 12:57
閱讀 1154·2019-08-26 13:51