prototypejs - 'Identity Function' 的目的?

标签 prototypejs

我在阅读 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/

相关文章:

jquery - 将函数从 jQuery ("#page>ul>li:last>a").click() 转换为原型(prototype)

javascript - 如何在Javascript中实现 "Drag-Select"功能?

javascript - jquery:以频率观察字段

javascript - 我们如何在深色背景效果中创建加载窗口

javascript - Prototype Ajax Object 实际上没有在 IE 8 中发出请求

javascript - 如何使用原型(prototype)选择方法选择前几项?

jquery - Magento Catalog_Products 在管理中使用 jQuery 拖放表格

javascript - 如何在完全独立的 .js 文件中覆盖/扩展 prototype.js 类

javascript - 来自后端的 javascript 值中的星级

javascript - 如何使用 Prototype JavaScript 框架从数组创建哈希?