admin 管理员组

文章数量: 887021


2024年1月5日发(作者:css导航条上怎么加图片)

es6中symbol的描述

ES6引入了新的原始类型Symbol(符号),它的目的在于为对象提供一种独一无二的标识,以及一种防止对象属性命名冲突的方式。

Symbol具有两个属性:

1、独一无二:Symbol是一种独一无二的数据类型,全局范围内有且仅有一份Symbol值,即使使用相同的参数也会生成不同的Symbol值,每个Symbol值之间都是不同的。

2、不可变:Symbol的值一旦创建就不可改变。

Symbols可以用作对象属性的独一无二标识符,这是一个非常实用的特性,因为它可以防止不同对象之间的属性命名冲突。

在ES6中,可以使用Symbol定义全局属性,以防止全局变量发生冲突:

let s = Symbol(My Symbol

window[s] = Hello World

Symbols也可以用作辨识符,以表明某个变量或属性是私有的:

const MySymbol = Symbol(my private symbol

class MyClass {

constructor(){

this[MySymbol] = I am private!;

}

getMySymbol(){

return this[MySymbol];

- 1 -

}

}

Symbols还可以用来表示函数的行为,可以为每个函数提供唯一的标识符:

const TYPE = {

ADD: Symbol(add

SUBTRACT: Symbol(subtract

MULTIPLY: Symbol(multiply

};

function mathFunc(type, a, b) {

switch (type) {

case :

return a + b;

case CT:

return a - b;

case LY:

return a * b;

default:

throw new Error(Unsupported type

}

}

Symbols也可以用于模块导入。当不同的模块引入同一个Symbol - 2 -

时,它们将引用到同一个符号,而不是模块的副本。

Symbols是ES6中一个重要的新特性,可以有效防止对象属性命名冲突,也可以用来做全局标识、辨识符以及表示函数行为。因此,它是非常强大而实用的新语法,可以大大提高代码的可维护性和可读性。

- 3 -


本文标签: 属性 对象 防止 模块 全局