#什么是Symbol? Symbol是ES6新增的一种数据类型,在使用Symbol进行对象创建时不需要加new操作符。Symbol可以用来处理字符串耦合,比如数据对象中有两个属性都用“李四”来命名,一个分数为50,一个分数为60,以李四查询值时返回最后一个李四,分数为60;而用Symbol创建对象属性,再进行查询,可以分别查出两个李四的成绩。 类似于定义一个身份证号(很难重复)通过身份证来查询成绩,不同李四有不同成绩。原本按姓名查找,只能查出晚出生的李四的成绩。 #八种数据类型
- 新增的Symbol,BigInt
- 原有的Number,Null,Underfined,Boolean,String,Object
- typeof 1 null,数组对象都为Object
- 1 instanceof Number =>false instanceof 检测引用数据类型,不能判断基本数据类型
- (x).constructor===Number
- 通过Object.prototype.toString.call()
- Object.prototype.toString.call()
- obj.proto===Array.prototype
- Array.isArray(XX)
- obj instanceof Array
- Array.prototype.isPrototype(obj)
#null和undefined的区别 null是空对象,undefined是未定义
#typeof null的结果是什么 是Object,因为类型存储时,Object的类型机器码为000,而null的值也全为0
#call,apply,bind 把自己的方法给别人用。 把自己的充电宝chargeBao给别人用。 帮别人冲到100 haveChargePerson.chargeBao.call(noChargePerson,100) apply把后面参数改为数组形式haveChargePerson.chargeBao.call(noChargePerson,[100]) bind会以函数形式返回 haveChargePerson.chargeBao.call(noChargePerson)(100)
let fun=haveChargePerson.chargeBao.call(noChargePerson) fun(100)