欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript中symbol怎么用

趙冰雪1年前6瀏覽0評論

JavaScript中的Symbol(符號)是一種新的原始數據類型,它可以用來創建唯一的標識符,這些標識符可以作為屬性的鍵來使用。

Symbol類型的值可以通過Symbol()函數來創建:

let sym1 = Symbol();
let sym2 = Symbol('mySymbol');

Symbol()函數每次返回一個全新的、唯一的符號值。如果向Symbol函數傳遞一個字符串參數,則該參數將成為符號的描述。

let sym = Symbol('mySymbol');
console.log(sym) // output: Symbol(mySymbol)

使用符號作為對象屬性的鍵時,可以避免屬性名沖突的問題。例如:

let myObj = {
[Symbol('myProp')]: 'Hello'
}
console.log(myObj) // output: {Symbol(myProp): "Hello"}

當使用Object.keys()或for...in循環訪問對象屬性時,符號鍵是不可見的。但是,我們可以通過Object.getOwnPropertySymbols()方法來獲取所有對象的符號屬性:

console.log(Object.getOwnPropertySymbols(myObj)); // output: [Symbol(myProp)]

除了使用Symbol()函數來創建符號值之外,還可以使用Symbol.for()函數來創建全局符號。當我們傳遞相同的字符串參數時,Symbol.for()將返回相同的符號值。例如:

let sym1 = Symbol.for('mySymbol');
let sym2 = Symbol.for('mySymbol');
console.log(sym1 === sym2); // output: true

使用Symbol.keyFor()方法可以獲取全局符號的描述:

let sym = Symbol.for('mySymbol');
console.log(Symbol.keyFor(sym)); // output: mySymbol

符號還可以用作Iterator(迭代器)對象的鍵值,例如:

let myIterable = {}
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
console.log([...myIterable]); // output: [1, 2, 3]

符號可以用作單例模式的實現。例如:

let mySingleton = (() => {
let instance;
function createInstance() {
let object = new Object('I am the instance');
return object;
}
return {
getInstance: function() {
if(!instance) {
instance = createInstance();
}
return instance;
}
}
})();
let instance1 = mySingleton.getInstance();
let instance2 = mySingleton.getInstance();
console.log(instance1 === instance2); // output: true