首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在对象构造函数中使用对象文字表示法的好处?

在对象构造函数中使用对象文字表示法的好处?
EN

Stack Overflow用户
提问于 2011-06-22 22:16:37
回答 2查看 1.3K关注 0票数 1

我正在尝试理解JS的一些细节,并且看到了许多将对象字面量传递给构造函数的示例。这种方法的好处是什么?我如何创建我的对象来使用这种方法?

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myTooltip = new YAHOO.widget.Tooltip("myTooltip", { 
    context: "myContextEl", 
    text: "You have hovered over myContextEl.",
    showDelay: 500
});

假设我正在创建一个简单的类。许多简单的面向对象教程建议如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myCat = new Cat();
myCat.name = "fluffy";
myCat.friendly = true;
myCat.lives = 9

而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myCat = new Cat({
    name: "fluffy", 
    friendly:true,
lives: 9
})

如何创建Cat对象以使用此方法?

EN

回答 2

Stack Overflow用户

发布于 2011-06-22 22:19:17

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Cat(params) {
 this.name = params['name'];
 this.friendly = !!params['friendly'];
  //etc
}

var tom = new Cat({'name' : 'tom', 'friendly' : 'true'});

这样做的好处是您可以获得名为的参数(如果您收到很多参数,则不需要记住顺序)。

对我来说也更具可读性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Cat({'name' : 'tom', 'friendly' : 'true', 'lives' : 9});

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Cat('tom',true,9);

此外,提供默认值更容易,例如使用underscore.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Cat(params) {

  var defaults = {'friendly' : true, 'lives' : 9};

  params = _.extend(params, defaults);

}
票数 7
EN

Stack Overflow用户

发布于 2011-06-22 22:25:49

在YUI的第一个示例中,对象文字被简单地用作选项字典。在没有命名参数并且一个函数有许多参数的语言中,它很有用。此外,在JavaScript中使用默认设置也更容易。

下面是一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function myf(options) {
  var url = options['url'] || 'http://...';
  var method = options['method'] || 'get';
  // ...
}

// Now you can pass only what you deem necessary in the function
myf({ 'url' : 'http://stackoverflow.com' });
myf({ 'method' : 'post' });
myf({});

这种方法的存在是为了它的实际目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6447216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文