- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是代码:
Function.prototype.curry = function() {
var slice = Array.prototype.slice,
args = slice.apply(arguments), // no thisArg ? arguments are the sec param [argsArray]
that = this;
return function() {
// thisArg: null
return that.apply(null, args.concat(slice.apply(arguments)));
}
}
以上是我的理解。那么为什么 that.apply
有一个 null
参数,而 slice.apply
没有?
当我将其更改为 args = slice.apply(null, arguments)
时,它抛出了一个错误:
Uncaught TypeError: Array.prototype.slice called on null or undefined
Function.prototype.apply()
我哪里错了?
最佳答案
.apply
为函数设置上下文和参数:
my_fn.apply({}, [1,2,3]);
function my_fn() {
console.log(this); // {}
console.log(arguments); // [1,2,3]
}
slice.apply(arguments);
是一种将类似对象的数组转换为实际数组的 hack,实际上它也可以是 .call(arguments);
因为 call 几乎像 .apply
一样工作:
my_fn.call({}, 1,2,3); // <- no array but more arguments
function my_fn() {
console.log(this); // {}
console.log(arguments); // [1,2,3]
}
所以 that.apply(null, ...
只是没有为函数 that
设置上下文。而 Array.prototype.slice
期望在类似对象的数组上工作,如果没有上下文,它将失败。
关于javascript - 为什么我使用 Array.prototype.slice 时省略了 apply param thisArg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773117/
我正在学习数组方法,有一件事我不太明白,可能与闭包有关。 首先,这是代码片段: let range = { minNumber: 20, maxNumber: 30, isVa
我正在浏览 React documentation当他们同时将函数参数包装到方括号和圆括号中时,对他们在这里试图说的内容感到有点困惑 React.Children.map(children, func
这个问题在这里已经有了答案: Are 'Arrow Functions' and 'Functions' equivalent / interchangeable? (4 个答案) 关闭 5 年前。
JavaScript 的 forEach documentation声明 .forEach语法是: arr.forEach(callback[, thisArg]) thisArg有什么用? 最佳答案
function Product(name, price) { this.name = name; this.price = price; } function Food(name, pric
这个问题在这里已经有了答案: How to interpret function parameters in software and language documentation? (4 个答案)
var new_array = arr.filter(callback[, thisArg]) 据我了解,可选参数 thisArg 只是更改您调用过滤器的数组。 好像是: arr.filter(cal
如何在 Lo-Dash 中使用 thisArg?是否可以将它与链接结合起来?这是一个使用其文档中的 thisArg 的示例: _.map(collection, [callback=identity]
我是 javascript 的新手,想知道对 map、foreach 和 filter 等函数使用可变 thisarg 是否明智。 考虑以下问题 function increasingValueFn(
给定以下代码: const theArray = ['Audi','Volvo','Mercedes']; const myObj = {a: 7}; theArray.forEach((value,
我正在用 Node 开发一个用 TypeScript 编写的应用程序,我想使用 filter() 根据属性过滤对象数组。我有一个公共(public)方法 (getValidObjects()),它接受
我正在学习真正喜欢 ES5 的 .bind(),因为它允许我修改回调函数的上下文,并真正解决大多数回调 hell 或金字塔问题。 但是,我想知道使用可选 args 参数是否被普遍认为是最佳实践。能够注
我正在阅读一本 JavaScript 书籍,发现了有关如何使用 arr.find(callback[, thisArg]) 的代码 class Person { constructor(nam
mdn document关于 Array.prototype.map 如下所示 arr.map(callback[, thisArg]) If a thisArg parameter is provi
我在将参数传递给 javascript array.prototype.findIndex(callback[, thisArg]) API 时遇到问题。 javascript 文档指定可以传递一个参
我正在使用 Node.js 编写一个小游戏,我希望它能以两种不同的语言提供。 为了显示不同游戏模式的翻译列表及其各自的描述,我正在使用 Array.prototype.map(callback, th
我正在阅读http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/并试图更好地理解“这个”
作为日期/温度散点图的数据,我希望能够使用类似日期的字符串对数据进行键控,以下是我设计的结构: var dateTemperatures = { '[2016,8,29]': {low
Douglas Crockford 在他的视频系列“Douglas Crockford JavaScript 大师类”中提到 JavaScript 数组方法中的 thisArg,例如 arr.forE
在 Javascript 中,我可以将 this 绑定(bind)到另一个函数并使用 .call 或 .apply 调用它 在 PHP 中,我可以使用 call_user_func 或 call_us
我是一名优秀的程序员,十分优秀!