如何在同一文字中访问刚刚在文字中定义的函数

How to access functions just defined in literal in other function in same literal?

本文关键字:文字 定义 函数 访问      更新时间:2023-09-26

>假设我有一个属性 { retired: true }自行车对象,我想准备一些过滤器,比如 functionnotFunctioning

var BikeChecker = {
  functioning: function(bike) {
    return (bike.retired != true);
  },
  notFunctioning: function(bike) {
    return !functioning(bike);
  };

我如何从 notFunctional 中访问 function,从而避免从头开始编写 notFunction?

我想避免:

notFunctioning: function(bike) {
  return (bike.retired == true);
}

并且,请不要建议做!functioning(bike)而不是定义notFunctioning(bike)(因为angular-js不允许我否定传递给过滤器"过滤器"的功能)

你不能

直接。不能直接引用尚不存在的对象文本。

一种常见的模式是使用工厂(IIFE),以便将对象存储在可以引用的变量中:

var BikeChecker = (function(){
    var b = {};
    b.functioning = function(bike) {
      return (bike.retired != true);
    };
    b.notFunctioning = function(bike) {
      return !b.functioning(bike);
    }
    return b;
})();

另一种模式是使用原型,以便您可以参考this但我不建议将其用于单例。