成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Symbol特性

lentoo / 2021人閱讀

摘要:值通過函數(shù)生成,使用,結(jié)果為函數(shù)前不能使用命令,否則會報(bào)錯(cuò)。函數(shù)的參數(shù)只是表示對當(dāng)前值的描述,相同參數(shù)的函數(shù)的返回值是不相等的。值可以作為標(biāo)識符,用于對象的屬性名,可以保證不會出現(xiàn)同名的屬性。方法返回一個(gè)已登記的類型值的。

ES6 引入了一種新的原始數(shù)據(jù)類型 Symbol,表示獨(dú)一無二的值。 1. Symbol 值通過 Symbol 函數(shù)生成,使用 typeof,結(jié)果為 "symbol"
var s = Symbol();
console.log(typeof s); // "symbol"
2. Symbol 函數(shù)前不能使用 new 命令,否則會報(bào)錯(cuò)。這是因?yàn)樯傻?Symbol 是一個(gè)原始類型的值,不是對象。 3. instanceof 的結(jié)果為 false
var s = Symbol("foo");
console.log(s instanceof Symbol); // false
4. Symbol 函數(shù)可以接受一個(gè)字符串作為參數(shù),表示對 Symbol 實(shí)例的描述,主要是為了在控制臺顯示,或者轉(zhuǎn)為字符串時(shí),比較容易區(qū)分。
var s1 = Symbol("foo");
console.log(s1); // Symbol(foo)
5. 如果 Symbol 的參數(shù)是一個(gè)對象,就會調(diào)用該對象的 toString 方法,將其轉(zhuǎn)為字符串,然后才生成一個(gè) Symbol 值。
const obj = {
  toString() {
    return "abc";
  }
};
const sym = Symbol(obj);
console.log(sym); // Symbol(abc)
6. Symbol 函數(shù)的參數(shù)只是表示對當(dāng)前 Symbol 值的描述,相同參數(shù)的 Symbol 函數(shù)的返回值是不相等的。
// 沒有參數(shù)的情況
var s1 = Symbol();
var s2 = Symbol();

console.log(s1 === s2); // false

// 有參數(shù)的情況
var s1 = Symbol("foo");
var s2 = Symbol("foo");

console.log(s1 === s2); // false
7. Symbol 值不能與其他類型的值進(jìn)行運(yùn)算,會報(bào)錯(cuò)。
var sym = Symbol("My symbol");

console.log("your symbol is " + sym); // TypeError: can"t convert symbol to string
8. Symbol 值可以顯式轉(zhuǎn)為字符串。
var sym = Symbol("My symbol");

console.log(String(sym)); // "Symbol(My symbol)"
console.log(sym.toString()); // "Symbol(My symbol)"
9. Symbol 值可以作為標(biāo)識符,用于對象的屬性名,可以保證不會出現(xiàn)同名的屬性。
var mySymbol = Symbol();

// 第一種寫法
var a = {};
a[mySymbol] = "Hello!";

// 第二種寫法
var a = {
  [mySymbol]: "Hello!"
};

// 第三種寫法
var a = {};
Object.defineProperty(a, mySymbol, { value: "Hello!" });

// 以上寫法都得到同樣結(jié)果
console.log(a[mySymbol]); // "Hello!"
10. Symbol 作為屬性名,該屬性不會出現(xiàn)在 for...in、for...of 循環(huán)中,也不會被 Object.keys()、Object.getOwnPropertyNames()、JSON.stringify() 返回。但是,它也不是私有屬性,有一個(gè) Object.getOwnPropertySymbols 方法,可以獲取指定對象的所有 Symbol 屬性名。
var obj = {};
var a = Symbol("a");
var b = Symbol("b");

obj[a] = "Hello";
obj[b] = "World";

var objectSymbols = Object.getOwnPropertySymbols(obj);

console.log(objectSymbols);
// [Symbol(a), Symbol(b)]
11. 如果我們希望使用同一個(gè) Symbol 值,可以使用 Symbol.for。它接受一個(gè)字符串作為參數(shù),然后搜索有沒有以該參數(shù)作為名稱的 Symbol 值。如果有,就返回這個(gè) Symbol 值,否則就新建并返回一個(gè)以該字符串為名稱的 Symbol 值。
var s1 = Symbol.for("foo");
var s2 = Symbol.for("foo");

console.log(s1 === s2); // true
12. Symbol.keyFor 方法返回一個(gè)已登記的 Symbol 類型值的 key。
var s1 = Symbol.for("foo");
console.log(Symbol.keyFor(s1)); // "foo"

var s2 = Symbol("foo");
console.log(Symbol.keyFor(s2) ); // undefined

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95527.html

相關(guān)文章

  • ES6 系列之模擬實(shí)現(xiàn) Symbol 類型

    摘要:值可以作為標(biāo)識符,用于對象的屬性名,可以保證不會出現(xiàn)同名的屬性。的結(jié)果為因?yàn)椴皇峭ㄟ^的方式實(shí)現(xiàn)的,所以的結(jié)果自然是。這個(gè)實(shí)現(xiàn)類似于函數(shù)記憶,我們建立一個(gè)對象,用來儲存已經(jīng)創(chuàng)建的值即可。方法返回一個(gè)已登記的類型值的。 前言 實(shí)際上,Symbol 的很多特性都無法模擬實(shí)現(xiàn)……所以先讓我們回顧下有哪些特性,然后挑點(diǎn)能實(shí)現(xiàn)的……當(dāng)然在看的過程中,你也可以思考這個(gè)特性是否能實(shí)現(xiàn),如果可以實(shí)現(xiàn),該...

    wangjuntytl 評論0 收藏0
  • Javascript Symbol 隱匿的未來之星

    摘要:通常,它做為一個(gè)偏功能性的標(biāo)記來表示,在全劇中它是唯一的。并且使用來生成,會在存入當(dāng)前全局上下文中一個(gè)結(jié)構(gòu)中,我們稱它為顧名思義,它是全局的,所以使用時(shí)我們需要謹(jǐn)慎,尤其是在大型項(xiàng)目中。 ES6中基礎(chǔ)類型增加到了7種,比上一個(gè)版本多了一個(gè)Symbol,貌似出現(xiàn)了很長時(shí)間,但卻因沒有使用場景,一直當(dāng)作一個(gè)概念層來理解它,我想,用它的最好的方式,還是要主動的去深入了解它吧,所以我從基礎(chǔ)部分...

    wwolf 評論0 收藏0
  • 第七元素

    摘要:今天,我們先看看第七種。這就是引入的原因。實(shí)際用途當(dāng)你第一眼看到,你會在想,什么鬼,不想用。注冊表每個(gè)是唯一的,即使兩個(gè)描述一樣的也不相等。第一句和第二句都是創(chuàng)建一個(gè),不同的是,不再是每次創(chuàng)建不同的,它會從注冊表中找,找到了就會返回。 typeof Symbol(): symbol Javascript 一共有6種數(shù)據(jù)類型:Undefined、Null、Number、String、Ob...

    王晗 評論0 收藏0
  • JS之對象(2)

    摘要:前言一篇徹底搞懂對象從此不用擔(dān)心沒對象啦本文從對象定義方法對象屬性數(shù)據(jù)類型遍歷幾種方法對象拷貝和攔截對象屬性方法及代碼實(shí)現(xiàn)幾個(gè)方面由淺入深介紹對象對象的聲明方法字面量構(gòu)造函數(shù)的作用創(chuàng)了一個(gè)新對象指向構(gòu)造函數(shù)構(gòu)造函數(shù)有返回會替換出來的對象如果 showImg(https://segmentfault.com/img/bVboXHr?w=550&h=392); 前言 一篇徹底搞懂對象,從此...

    CarterLi 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<