symbols
基础
1 | let sym1 = Symbol() // 只能通过Symbol构造函数创建的 |
1 | let sym2 = Symbol("key") |
1 | let obj = { [sym]: "value" } |
1 | const getClassNameSymbol = Symbol(); |
众所周知的Symbols
- Symbol.hasInstance: 识别一个对象是否是其实例
- Symbol.isConcatSpreadable: 布尔值,表示当在一个对象上调用Array.prototype.concat时,这个对象的数组元素是否可展开
- Symbol.iterator: for-of语句,返回默认迭代器
- Symbol.match: 正则表达式用来匹配字符串
- Symbol.replace: 正则表达式用来替换字符串中匹配的子串
- Symbol.search: 正则表达式返回被匹配部分在字符串中的索引
- Symbol.split: 正则表达式来用分割字符串
- Symbol.species: 函数值,为一个构造函数。用来创建派生对象。
- Symbol.toPrimitive: 把对象转换为相应的原始值。
- Symbol.toStringTag: 返回创建对象时默认的字符串描述。
- Symbol.unscopables: 对象,它自己拥有的属性会被with作用域排除在外。
迭代器和生成器
for…of: 迭代对象的键对应的值
1 | let x=['a','d'] |
for…in: 迭代对象的键的列表
1 | for(let i in x){} //遍历的结果是值的下标0,1 |
mixins: 结合,可提前给混合进来的属性方法占位
1 | class a{} |
三斜线指令: /// 单行注释,注释内容会作为编译器指令使用
- ///
指令 : 用于声明文件间的依赖。 - 当使用–out或–outFile时,可调整输出内容的顺序。文件在输出文件内容中的位置与经过预处理后的输入顺序一致。
- 如果指定了–noResolve编译选项,三斜线引用会被忽略;它们不会增加新文件,也不会改变给定文件的顺序。
///<reference types="..." />
指令 : 声明了对某个包的依赖。(d.ts文件)///<reference no-default-lib="true"/>
把一个文件标记成默认库///<amd-module />
默认情况下生成的AMD模块都是匿名的。允许给编译器传入一个可选的模块名