元编程就是指以操作指标为程序自身的行为个性的编程,而在ES6中减少了类型symbol,除了自定义的符号之外,还预约义了其余的一些内置符号,能够被称为内置符号。上面就来给大家介绍一下这些内置符号。

  1. Symbol.iterator  这个符号示意任意对象上的一个专门的属性,语言机制会主动的在这个属性上寻找一个办法,这个办法会结构一个迭代器来耗费这个对象的值。… 开展和 for…of 循环会主动应用它。  咱们也能够通过自定义 Symbol.iterator 属性为任意对象值定义本人的迭代器逻辑,它将笼罩默认的迭代器。咱们相当于是定义了一种元编程的行为,提供给JavaScript其余局部(也就是运算符和循环构造)在解决定义的对象时应用。  2. Symbol.toStringTag 与 Symbol.hasInstance  在日常逻辑中经常出现的一个场景,判断一个值是什么类型,通常应用的是 toString() 和 instanceof 。  当初 ES6 中,能够定义这些操作的行为个性了。

通过以上案例咱们能够看出页游的符号组:

  toStringTag 符号指定了在 字符串化时应用的字符串值。  hasInstance 符号是在结构器函数上的一个办法,承受实例对象值,通过返回 true 或者 false 来显示这个值是否能够被认为是一个实例。  在 Function.prototype 上 hasInstance 默认的页游www.pizei.com writable 是 false,不可写入。能够通过 Object.defineProperty() 来绕开它。  3. Symbol.species  这个符号管制要生成新的实例时,类的内置办法应用哪一个结构器。 内置原生结构器 Symbol.species 的默认行为是 return this 。 如果要定义生成新的实例的办法,应用new this.constructorSymbol.species ,而后继承的类就能够依据它来管制由哪个结构器来产生这些实例。  4. Symbol.toPrimitive  在ES6之前,对象为了某个操作(例如相加 + 或比拟 == )必须强制转换为原生类型时,是无法控制该行为的 ,当初能够通过Symbol.toPrimitive这个符号来管制这个行为。  Symbol.toPrimitive 办法依据调用 ToPrimitive 的运算冀望的类型,会提供一个类型(type) 指定 "string"、"number" 或 "default"。   以上就是es6 symbol的介绍了,心愿能帮到大家。