Array.prototype.find.call(function(x){return x>2},[1,23,4,4])
请问一下我这样为什么会报错呢,感谢感谢
Array.prototype.find.call({},function(x){console.info(this);return x>2},[1,23,4,4])
结果是undefiend。 第一个{}是被替换的对象/方法(call的用法)。然后 Array.prototype这个对象去调用
find(function(x){console.info(this);return x>2},[1,23,4,4])。但在find中,第二个参数:可选,指定 callback 的 this 参数。
[1,23,4,4].find(function(x){console.info(this);return x>2}) 这是用[1,23,4,4]调用find可得到23结果。
谢谢
”第一个{}是被替换的对象/方法(call的用法“ 这句话是错的。
fun.call(thisArg[, arg1[, arg2[, ...]]]):thisArg在fun
函数运行时指定的this
值。
需要注意的是,指定的this
值并不一定是该函数执行时真正的this
值,如果这个函数处于非严格模式下,则指定为null
和undefined
的this值会自动指向
全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this
会指向该原始值的自动包装对象。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call
[1,23,4,4].find(function(x) { return x > 2 }); 这样哦,妹纸……
我知道这种写法呢?我只是想知道我用call为什么不行呢,用原型call
@小码农雯: 倒过来哦。 Array.prototype.find.call([1, 2, 3, 4,5], function(x) { return x > 2 });
@萌萌丶小魔王: 我去。。。。