Object.prototype.toString.call(obj) 检测对象类型
Array.prototype.slice.call(arrayLike) 类数组转换数组
Object.prototype.hasOwnProperty.call(myObject,'a') 判断属性是否在对象上
你不知道的javascript上卷 119页 Array.prototype.push.apply(arr1,arr2) 两个数组合并
Math.max.apply(null,array) 得到数组中最大的一项
Math.min.apply(null,array) 得到数组中最小的一项
let a='foot'
Array.prototype.join.call(a,'-') // 'f-o-o-t'
Array.prototype.map.call('a',v=>{ reurn v.toUpperCase()+'.' }).join('') // F.O.O.T
你不知道的javascrip中券 14页
原因:
-
call(),apply()原本就是为了处理函数this指向的产物,而toString(),push(),join(),max()...本身都是函数,只不过this指向不同,call(),apply()只不贵是把他们的this指向改变了而已。
-
toString(),push(),join(),max()...这些函数默认在js内部可以设置成通用的函数,比如join()即能处理数组又能处理字符串。