网站群建设方案.doc,域名备案好了怎么建设网站,官网建设开发哪家公司好,网站上动画视频怎么做的编程笔记 html5cssjs 071 JavaScript Symbol 数据类型 一、Symbol 数据类型二、 示例小结 在JavaScript中#xff0c;Symbol 是一种基本数据类型#xff0c;它于 ECMAScript 6#xff08;ES6#xff09;中引入#xff0c;用来创建唯一的、不可变的值。这些值可以… 编程笔记 html5cssjs 071 JavaScript Symbol 数据类型 一、Symbol 数据类型二、 示例小结 在JavaScript中Symbol 是一种基本数据类型它于 ECMAScript 6ES6中引入用来创建唯一的、不可变的值。这些值可以作为对象属性的键从而提供了一种防止属性名冲突的方式并允许开发者隐藏对象中的一些属性或方法使其对常规操作如 for...in 循环和 Object.keys() 不可见。 一、Symbol 数据类型 唯一性 每个通过 Symbol() 函数生成的 Symbol 值都是独一无二的即使它们具有相同的描述符。这意味着即使两个符号使用相同的字符串作为描述它们也是不同的。 let s1 Symbol(description);
let s2 Symbol(description);
console.log(s1 s2); // 输出false隐式转换阻止 Symbol 类型不能与其他任何类型的值进行相等性比较也不能被转换为其他类型。 不可变性 一旦创建了一个 Symbol就无法改变这个值也无法重新赋值。 不可枚举性 当用作对象属性时默认情况下Symbol 属性是不可枚举的这意味着它们不会出现在 for...in 循环、Object.keys()、Object.getOwnPropertyNames() 等返回的对象属性列表中。 描述符 创建 Symbol 时可以传入一个可选的描述字符串用于调试目的但不影响其唯一性。 let s3 Symbol(unique identifier);
console.log(s3.description); // 在标准 JavaScript 中输出unique identifier注意在最新的规范中Symbol.prototype.description 已不再是一个标准属性而是需要通过 toString() 方法间接获取描述信息。 内置 Symbol 值 JavaScript 提供了一些内置的 Symbol 值例如 Symbol.iterator用于定义迭代器、Symbol.hasInstance自定义 instanceof 操作符的行为、Symbol.toPrimitive自定义对象到原始值的转换行为等等。 作为对象属性 Symbol 可以安全地用作对象属性名来避免与已有属性冲突。 let myKey Symbol();
let obj {};
obj[myKey] secret value;
console.log(obj[myKey]); // 输出: secret value
for(let key in obj) {console.log(key); // 不会输出 myKey因为它是 Symbol 类型且默认不可枚举
}若要访问 Symbol 类型的属性通常使用 Object.getOwnPropertySymbols() 方法。
二、 示例
// 创建一个带有 Symbol 键的简单对象
let id Symbol(id);
let user {name: Alice,[id]: 12345 // 使用 Symbol 作为键存储用户 ID
};console.log(user[id]); // 输出: 12345// 获取对象的所有 Symbol 属性
let symbols Object.getOwnPropertySymbols(user);
console.log(symbols); // 输出: [Symbol(id)]// 内置 Symbol 示例 - 自定义 instanceof 行为
class MyClass {}
MyClass[Symbol.hasInstance] function(inst) {return inst inst.isMyClass;
};
let instance { isMyClass: true };
console.log(instance instanceof MyClass); // 根据自定义规则判断是否为 MyClass 实例小结
总结来说Symbol 类型在 JavaScript 中主要用于实现私有属性、解决命名冲突以及扩展内置对象行为等方面提供了更多元化的编程方式和更强的封装能力。