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

时间:2013-09-16 11:05:36

标签: javascript

假设我有自行车对象,其属性为 {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);
}

请不要建议!运行(自行车)而不是定义 notFunctioning(自行车)(因为angular-js不允许我否定功能传递给过滤器'过滤器')

1 个答案:

答案 0 :(得分: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,但我不建议将其用于单身人士。