如何将函数注入现有对象?

时间:2016-03-02 08:48:58

标签: javascript angularjs

所以我有一个简单的功能。我需要将它设置为一个已经存在的对象。问题是我不知道这是如何工作的。如果是这样的话。我需要编写自定义函数,第三方执行它。

var a = [{name: 'yg', sort:'alpha'}, {name: 'pinto'}, {name: 'xyg'}];

defs = $eval(a);
var Fn = function(a, b) {
    return 0;
};

angular.forEach(defs, function(value, key){
    if(value.sort === 'alpha') {
        value.fn =  Fn;
        return value;
    }
});

我需要def:

[
  {name: 'yg',
   sort:'alpha', 
   Fn: function(a,b){return 0;}
  }, 
  {
    name: 'pinto'
  }, 
  {
    name: 'xyg'
  }]

此处对象对象包含一些但不包含Fn。

2 个答案:

答案 0 :(得分:0)

有什么问题?

var Fn = function(a, b) {
    return 0;
};

angular.forEach(defs, function(value, key){
    if(value.sort === 'alpha') {
        value.fn =  Fn;
    }
});

答案 1 :(得分:0)

请参阅此http://plnkr.co/edit/10s1laGm66ggkyNk9eao?p=preview

var Fn = function(a, b) {
    alert(a+','+b);
    return 0;
  };

  var defs = [{name: 'yg', sort:'alpha'},{ name: 'pinto' },{ name:'xyg' }];
  angular.forEach(defs, function(value, key){
    if(value.sort === 'alpha') {
      defs[key]["Fn"] =  Fn;
      defs[key]["Fn"](1, 2);
      defs[key]["some"] =  'somestring';
    }
  });