不屬於javascript的資料型別是interface,interface是js中的保留字;而javascript的資料型別有Undefined、Number、Symbol等等。
本文操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
JavaScript的基本資料型別有:(1)Undefined、(2)Null、(3)Boolean、(4)String、(5)Number、(6)Symbol、( 7)Object。 ES6 增加了Symbol類型,以下主要是講Symbol類型的一些相關知識點。
Symbol的特性
#1、實例是唯一且無法改變的;一種唯一標識符,可用作物件的唯一屬性名,這樣其他人就不會改寫或覆寫你設定的屬性值。
1 let id = Symbol("id");
2、資料型別的特徵:唯一性,即使是用同一個變數產生的值也不相等。
1 let id1 = Symbol("id");2 let id2 = Symbol("id");3 console.log(id1 == id2); //false
3、資料型別的特性:隱藏性,for···in,object.keys() 不能存取。
1 let id = Symbol("id");2 let obj = {3 [id] : 'symbol' 4 }5 for ( let key in obj){6 console.log(obj[key]); //输出为空7 }
能夠存取的方法:Object.getOwnPropertySymbols,會傳回一個數組,成員是目前物件的所有用作屬性名的Symbol 值。
1 let id = Symbol("id");2 let obj = {3 [id] : 'symbol' 4 }5 let arr = Object.getOwnPropertySymbols(obj);6 console.log(arr) // [Symbol(id)]7 console.log(obj[arr[0]]) // 'symbol'
4、可多次使用同一個symbol值,官方提供了全域註冊並登記的方法:Symbol.for()
let name1 = Symbol.for("name"); // 检测未创建后新建let name2 = Symbol.for("name"); // 检测已创建后返回console.log(name1 == name2); // true
透過這個方法就可以透過參數值取得到全域的symbol物件了,反之,可以透過Symbol.keyFor()#取得到參數值。
let name1 = Symbol.for("name"); let name2 = Symbol.for("name"); console.log(Symbol.keyFor("name1")); // 'name'console.log(Symbol.keyFor("name2")); // 'name'
5、instanceof 的結果為false
let s = Symbol('foo'); console.log(s instanceof Symbol); // false
#注意:在建立symbol類型資料時的參數只是作為標識使用,所以Symbol() 作為參數也是可以的。
【推薦學習:javascript進階教學#】
以上是不屬於javascript的資料型別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!