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

資訊專欄INFORMATION COLUMN

Symbol特性

lentoo / 2013人閱讀

摘要:值通過函數生成,使用,結果為函數前不能使用命令,否則會報錯。函數的參數只是表示對當前值的描述,相同參數的函數的返回值是不相等的。值可以作為標識符,用于對象的屬性名,可以保證不會出現同名的屬性。方法返回一個已登記的類型值的。

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

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

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

console.log(s1 === s2); // false
7. Symbol 值不能與其他類型的值進行運算,會報錯。
var sym = Symbol("My symbol");

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

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

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

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

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

// 以上寫法都得到同樣結果
console.log(a[mySymbol]); // "Hello!"
10. Symbol 作為屬性名,該屬性不會出現在 for...in、for...of 循環中,也不會被 Object.keys()、Object.getOwnPropertyNames()、JSON.stringify() 返回。但是,它也不是私有屬性,有一個 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. 如果我們希望使用同一個 Symbol 值,可以使用 Symbol.for。它接受一個字符串作為參數,然后搜索有沒有以該參數作為名稱的 Symbol 值。如果有,就返回這個 Symbol 值,否則就新建并返回一個以該字符串為名稱的 Symbol 值。
var s1 = Symbol.for("foo");
var s2 = Symbol.for("foo");

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95527.html

相關文章

  • ES6 系列之模擬實現 Symbol 類型

    摘要:值可以作為標識符,用于對象的屬性名,可以保證不會出現同名的屬性。的結果為因為不是通過的方式實現的,所以的結果自然是。這個實現類似于函數記憶,我們建立一個對象,用來儲存已經創建的值即可。方法返回一個已登記的類型值的。 前言 實際上,Symbol 的很多特性都無法模擬實現……所以先讓我們回顧下有哪些特性,然后挑點能實現的……當然在看的過程中,你也可以思考這個特性是否能實現,如果可以實現,該...

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

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

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

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

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

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

    CarterLi 評論0 收藏0

發表評論

0條評論

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