2010-12-05 7 views
4

Я сделать объект JavaScript с буквальной нотацией, но я не уверен, как сделать объект принимать параметры, как это:Создание объекта JavaScript с помощью буквального обозначения

hi.say({title: "foo", body: "bar"}); 

вместо hi.say("foo", "bar");.

Текущий код:

var hi = { 
    say: function (title, body) { 
     alert(title + "\n" + body); 
    } 
}; 

Причина, почему я хочу, потому что я хочу, чтобы люди могли пропустить заголовок и просто положить тело, и сделать то же самое для многих других параметров.

Так вот почему мне нужно что-то вроде, как мы можем использовать параметры функций JQuery {parameter:"yay", parameter:"nice"}

P.S. Я также открыт для изменения текущего метода - имея в виду, что будет много параметров, некоторые из них требуются и некоторые необязательные, и которые не могут быть упорядочены определенным образом.

ответ

6

Там нет специального синтаксиса параметра для этого, просто сделать функцию принимать один параметр, и это будет объект:

var hi = { 
    say: function(obj) { 
    alert(obj.title + "\n" + obj.body); 
    } 
} 
0
var hi = { 
    say: function(opts) { 
    var title = (opts.title)?opts.title:"default title"; 
    var body = (opts.body)?opts.body:"default body"; 

    // do whatever with `body` and `title` just like before 
    // ... 
    } 
}; 
1

Что-то, как это должно работать:

var hi = { 
    say: function(options) { 
     if (options.title) alert(options.title + "\n" + options.body); 
     else alert('you forgot the title!'); 
    } 
} 


hi.say({ //alerts title and body 
    "title": "I'm a title", 
    "body": "I'm the body" 
}); 
hi.say({ //alerts you for got the title! 
    "body": "I'm the body." 
}); 
Смежные вопросы