我爱编程

TypeScript 学习笔记 之 Symbol 迭代器与生成器

2018-03-08  本文已影响20人  一半晴天

Symbol

symbol 是 ES 2015 引入的一个新的原始类型。 通过 Symbol 构造函数创建。
symbol 具有不可变性和唯一性。

  1. 唯一性示例:
let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 == sym3 ; // false ,即使创建的 key 相同也不相等。 symbol 具有 唯一性.
  1. symbol对象 也可以像string 对象一样作为对象的属性 key.
let sym = Symbol();
let obj = {
  [sym]: "value"
}
  1. symbol 对象也可以与 computed 属性声明来声明其他对象属性或类成员。
const getClassNameSymbol = Symbol();
class C{
  [getClassNameSymbol](){
     return "C";
  }
}
  1. 内置的Symbol
    参考 [Symbol] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)

Iterators and Generators

An object is deemed iterable if it has an implementation for the Symbol.iterator property.

for..of 语句可以通过遍历可迭代对象。

let arr = [1,"string", false];
for(let ele of arr){
}

for..of VS for..in

for..in 是遍历指定对象的key 列表。

注意:如果如果要兼容 ES5 的话 for..of 只能用于数组类型。

上一篇 下一篇

猜你喜欢

热点阅读