首页 > var func = Array.prototype.join.call (浏览器返回结果自相矛盾)

var func = Array.prototype.join.call (浏览器返回结果自相矛盾)

arr = ["a","b"]
var func =  Array.prototype.join.call
var result = func(arr, "+")
console.log(result)

在chrome浏览器下 
返回的结果 Uncaught TypeError: undefined is not a function

但是console.log(typeof func);  
返回的结果   function

**我的疑惑: 这样的现象应是  call 引起的 ,我想知道为什么call会导致这样?**

内容出自 JavaScript权威指南P163  (内容有改动)

Array.join = Array.join || function(a,sep) {
   return Array.prototype.join.call(a,sep);
}

不吝赐教

http://.com/q/1010000000585634

见这里,我之前理解也是有错误的。


当你把 call 方法借过来(赋值给 func), 然后单独调用它的时候, 是会丢些内容的.

下面的例子, 如果你能理解为什么的话, 那你应该可以解理上面的那个为什么出错了.

这里的出错信息, 并不是表示 func 是未定义的, 而是由你借过来的call这个方法的内部实现上,

在某行代码中要用到某个方法, 而因为丢失了 上下文, 所以导致没有那个方法, 从而抛出的错误.

又因是内部实现的, 所以抛不出来具体是哪行,哪个方法调用时出错的 =,=

【热门文章】
【热门文章】