91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用實例解析ES6 Symbol在對象中的作用

發布時間:2020-07-18 11:27:57 來源:億速云 閱讀:164 作者:小豬 欄目:web開發

這篇文章主要用實例解析ES6 Symbol在對象中的作用,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

本文實例講述了ES6 Symbol在對象中的作用。分享給大家供大家參考,具體如下:

在ES5中 對象屬性名都是字符串,這容易造成屬性名的沖突,比如,你使用了一個他人提供的對象,但又想為這個對象添加新的方法(mixin 模式),新方法的名字就有可能與現有方法產生沖突,于是 ES6 引入了Symbol。Symbol是一種新的原始數據類型,表示獨一無二的值。它是繼undefined、null、布爾值(Boolean)、字符串(String)、數值(Number)、對象(Object)六種數據類型之后的第七種數據類型。凡是屬性名屬于 Symbol 類型,就都是獨一無二的,可以保證不會與其他屬性名產生沖突。

1.聲明Symbol

Symbol函數可以接受一個字符串作為參數,表示對 Symbol 實例的描述,主要是為了在控制臺顯示,或者轉為字符串時,比較容易區分。

var f= Symbol();//Symbol()
var f= Symbol('foo');//Symbol(foo)
// 沒有參數的情況
let s1 = Symbol();
let s2 = Symbol();
s1 === s2 // false

// 有參數的情況
let s1 = Symbol('foo');
let s2 = Symbol('foo');

s1 === s2 // false

注意,Symbol函數的參數只是表示對當前 Symbol 值的描述,因此相同參數的Symbol函數的返回值是不相等的。

s1和s2都是Symbol函數的返回值,而且參數相同,但是它們是不相等的。

2.Symbol在對象中的應用

Symbol作為屬性名:

let mySymbol = Symbol();

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

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

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

// 以上寫法都得到同樣結果
a[mySymbol] // "Hello!"

賦值-括號形式:

a[mySymbol]='web';

3.Symbol對象元素的保護作用

在對象中有很多值,但是循環輸出時,并不希望全部輸出,那我們就可以使用Symbol進行保護。

沒有進行保護的寫法:

var obj={name:'小明',skill:'web',age:18};
for (let item in obj){
  console.log(obj[item]);
}

現在我不想別人知道我的年齡,這時候我就可以使用Symbol來進行循環保護。

let obj={name:'小明',skill:'web'};
let age=Symbol();
obj[age]=18;
for (let item in obj){
  console.log(obj[item]);//小明、web
} 
console.log(obj[age]);

看完上述內容,是不是對用實例解析ES6 Symbol在對象中的作用有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

准格尔旗| 页游| 洛隆县| 正定县| 克什克腾旗| 许昌市| 鱼台县| 随州市| 上高县| 天长市| 华阴市| 来凤县| 班玛县| 郯城县| 芦山县| 通化市| 鄂州市| 收藏| 衡水市| 噶尔县| 叶城县| 和龙市| 河池市| 东莞市| 佛冈县| 郴州市| 安阳市| 邓州市| 潞城市| 屏东县| 旅游| 潼南县| 汤阴县| 新晃| 昭觉县| 信阳市| 鄂尔多斯市| 英超| 隆安县| 合肥市| 绵竹市|