使用文字表示法创建JavaScript对象

时间:2010-12-05 22:58:13

标签: javascript syntax

我正在使用文字符号制作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。我也打开修改当前方法 - 记住会有很多参数,一些是必需的,一些是可选的,而且不能以特定的方式进行排序。

3 个答案:

答案 0 :(得分:6)

没有特殊的参数语法,只需使该函数采用单个参数,这将是一个对象:

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

答案 1 :(得分: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."
});

答案 2 :(得分: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
     // ...
  }
};