0

假设我有一个属性为{retired: true }的自行车对象,并且我想准备一些过滤器,例如功能notFunctioning

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

如何从notFunctioning中访问功能,从而避免从头开始编写notFunctioning ?

我想避免:

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

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

4

1 回答 1

1

你不能直接。您不能直接引用尚不存在的对象文字。

一种常见的模式是使用工厂(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但我不建议将其用于单例。

于 2013-09-16T11:08:17.527 回答