Javascript“财产继承”

有没有一种方法可以为数组中的对象文字指定通用元素?

例如:

var array = [ {key: "hi", label: "Hi", formatter:deleteCheckboxFormatter},
              {key: "hello", label: "Hello", formatter:deleteCheckboxFormatter},
              {key: "wut", label: "What?", formatter:deleteCheckboxFormatter}];

所有三个记录使用相同的格式化程序.您将如何重构呢?

解决方法:

我想到了两种选择:

一个具有默认值的“ helper”功能,它的“ common”字段为:

function make(key, label) {
  return {'key': key, 'label': label, formatter:deleteCheckboxFormatter};
}

var array = [ make("hi",  "Hi"),
              make("hello", "Hello"),
              make("wut", "What?")];

或更通用的函数接受formatter属性的参数:

function make (formatter) {
  return function (key, label) {
    return {'key': key, 'label': label, 'formatter':formatter};
  }
}

// a function to build objects that will have a 'fooFormatter'
var foo = make('fooFormatter'); 

var array = [ foo ("hi",  "Hi"),
              foo ("hello", "Hello"),
              foo ("wut", "What?")];

我想到的最后一件事就是简单地遍历分配公共字段的数组:

var array = [ {key: "hi", label: "Hi"},
              {key: "hello", label: "Hello"},
              {key: "wut", label: "What?"}];

var i = array.length;
while (i--) {
  array[i].formatter = 'deleteCheckboxFormatter';
}

我在这里使用了相反的while循环,因为迭代的顺序并不重要,而这种类型的循环为performs better.

上一篇:java-的正则表达式排除引号内的匹配项


下一篇:C#-流浪数据与可测试性