数据类型
- 分类
原始数据类型: undefined number string boolean
引用数据类型: object array function - 区别
内存分配不同:栈内存/堆内存
赋值(直接赋值+参数赋值): 数值赋值/堆内存地址赋值(浅拷贝) - 判断数据类型
- typeof *: number boolean object string undefined function
- Object.prototyle.toString.call(*): [object Number], [object String], [object Object], [object Function], [object Array], [object null],[object Undefined]
(最好) - instanceof/constructor: 用于判断function原型和构造函数
数组和类数组
典型类数组: arguments, dom选择返回
类数组和数组之间的区别: 类数组本质为对象,其并不具有数组的方法
类数组转换成数组: Array.from()/ Array.prototype.slice.call()
数组常见api: join/slice/forEach/reduce/map/filter/splice/shift/unshift/pop/push
bind,call,apply
共同点:都是用于指定一个函数在运行时this指向
区别:绑定后不执行,而是返回了一个新的函数,并确定了this的指向
call的参数形式为参数列表,apply时参数数组
function mycall(fun,obj,...args){
obj.fun = fun;
obj.fun(...args);
}
function myapply(fun,obj,args){
obj.fun = fun;
obj.fun(...args);
}
function mybind(fun,obj,...argsx){
let self;
if(self===undefined){
self = obj;
` }