# 方法借用

# 定义

当我们想要使用别的类型的方法时,我们不想重写,我们就可以通过借用它的方法,来实现我们的目的。

# 原理

因为在内置方法实现中,用的都是 this,这给我们提供了一种可以任意切换环境。

# 例子

1. 类数组转为数组
var arrayLike = {0: 1, 1: 2, length: 2};
Array.prototype.slice.call(arrayLike);
// [1, 2];
具体是因为:在 slice 内部我们把 环境切换到 arrayLike 上,然后我们通过类数组带有的 length 循环.(所以必须是带有 length 属性的)
2. 判断类型
Array.prototype.toString.call([1, 2, 3]); // [object Array];
同样在 实现过程中让 O 成为 ToObject(this). 所以才得到 Array。