JavaScript起源和特性
原型链是借鉴了Self和Smalltalk语言,所以JavaScript天生原型设计模式。new的原理是找到对象,通过克隆创建一个一模一样的对象,这里根对象是Object.prototype对象,所有对象都是从Object.prototype对象克隆而来。
可以用ECMAScript 5提供的Object.getPrototypeOf来查看着两个对象的原型
七种内置类型
- 空值(null)
- 未定义 (undefined)
- 布尔值 (boolean)
- 数字 (number)
- 字符串 (string)
- 对象 (object)
- 符号 (symbol ES6新增)
对于这些类型都比较常用,主要将下symbol,主要用于
Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。
- 定义对象属性的迭代器,遍历对象中的属性值
- 使用symbol.toStringTag来定义对象的toString结果
- 消除魔术字符串,比如状态变化是自己定义的几个字符串,最后也是对字符串进行比对,这时就可用Symbol消除魔法字符串。
const shapeType = {
triangle: 'Triangle'
};
// 可以转换成
const shapeType = {
triangle: Symbol()
};
function
function也是JavaScript的一个内置类型。是object的子类,有内部属性Call,该属性使其可以被调用。函数对象的length属性是其声明的参数个数
判断数据类型
typeof
instanceof
使用constructor 和Object.toString
参考各种博客、《你不知道的JavaScript》、《JavaScript设计模式与开发实践》