2013-07-05 3 views
3

Я интересно, если есть лучший способ сделать это:Node.js добавление нескольких свойств объекта

module.exports.foo = "bar"; 
module.exports.bar = "baz"; 
module.exports.foobar = "foobaz"; 

Теперь, я слышал о «с» (и его опасности), но это Безразлично 't здесь, потому что он не может добавлять новые свойства к объекту, он может только изменять существующие свойства. На самом деле, если вы попытаетесь добавить новые свойства, вы в конечном итоге скроете область охвата, которая не очень приятна.

Нечто подобное было бы неплохо:

module.exports += { 
    foo: "bar", 
    bar: "baz", 
    foobar: "foobaz" 
} 

Но что превращает обе стороны в строки до конкатенации их, которые не то, что я хочу.

Существует ли такой синтаксический сахар в JavaScript с поддержкой Node.JS? Может быть, функция на «модуле» для добавления сразу нескольких свойств?

ответ

3

Вы могли бы написать простую функцию для цикла над ними и добавить их в module.exports или вы можете попробовать node.extend, которая пытается имитировать JQuery-х $.extend()

+3

Я думаю, что цикл является меньшим из этих двух зол. –

0

Рассмотрите возможность использования _.extend

Таким образом, в вашем примере:

  module.exports += { 
       foo: "bar", 
       bar: "baz", 
       foobar: "foobaz" 
      } 

Было бы:

  var _ = require('underscore'); 

      _.extend(module.exports, 
       { 
        foo: "bar", 
        bar: "baz", 
        foobar: "foobaz" 
       } 
      ); 

Или, если вы не хотите каких-либо зависимостей, используя необработанный JavaScript:

  function myExtend(dest, obj) { 
       for (key in obj) { 
        var val = obj[key]; 
        dest[key] = val; 
       } 
      } 
      myExtend(module.exports, 
       { 
        foo: "bar", 
        bar: "baz", 
        foobar: "foobaz" 
       } 
      ); 

Если вы используете последний метод, убедитесь, чтобы проверить крайние случаи, которые у меня здесь нет!

Смежные вопросы