我在阅读 PrototypeJS 的文档时遇到了这个主题:它的 Identity Function .我对它做了一些进一步的搜索和阅读,我想我理解它的数学基础(例如,乘以 1 是一个恒等函数(或者我是否误解了这个?)),但不是你为什么要编写 JS(或 PHP 或 C 或其他) - 基本上将 X 作为参数然后执行类似 return X
的函数.
是否有与此相关的更深层次的见解?为什么 Prototype 提供这个功能?我可以用它做什么?
谢谢 :)
最佳答案
使用 Identity 函数使库代码更易于阅读。拍Enumerable#any方法:
any: function(iterator, context) {
iterator = iterator || Prototype.K;
var result = false;
this.each(function(value, index) {
if (result = !!iterator.call(context, value, index))
throw $break;
});
return result;
},
它允许您检查数组的任何元素在 bool 上下文中是否为真。像这样:
$A([true, false, true]).any() == true
但它也允许您在检查是否为真之前处理每个元素:
$A([1,2,3,4]).any(function(e) { return e > 2; }) == true
现在如果没有身份函数,您将不得不编写任何函数的两个版本,一个如果您预处理,一个如果您不预处理。
any_no_process: function(iterator, context) {
var result = false;
this.each(function(value, index) {
if (value)
throw $break;
});
return result;
},
any_process: function(iterator, context) {
return this.map(iterator).any();
},
关于prototypejs - 'Identity Function' 的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1298627/