Dav*_*vid 1 javascript object-literal
我正在尝试理解JS的细节,并且看到很多对象文字的例子被传递给构造函数.这种方法有什么好处?如何创建我的对象来使用这种方法?
例如:
myTooltip = new YAHOO.widget.Tooltip("myTooltip", {
context: "myContextEl",
text: "You have hovered over myContextEl.",
showDelay: 500
});
Run Code Online (Sandbox Code Playgroud)
假设我正在创建一个简单的类.很多简单的OO教程都提供了类似的东西
myCat = new Cat();
myCat.name = "fluffy";
myCat.friendly = true;
myCat.lives = 9
Run Code Online (Sandbox Code Playgroud)
相反
myCat = new Cat({
name: "fluffy",
friendly:true,
lives: 9
})
Run Code Online (Sandbox Code Playgroud)
如何创建Cat对象以使用此方法?
function Cat(params) {
this.name = params['name'];
this.friendly = !!params['friendly'];
//etc
}
var tom = new Cat({'name' : 'tom', 'friendly' : 'true'});
Run Code Online (Sandbox Code Playgroud)
好处是您获得了命名参数(如果您收到很多参数,则无需记住订单).
对我来说也更具可读性
new Cat({'name' : 'tom', 'friendly' : 'true', 'lives' : 9});
Run Code Online (Sandbox Code Playgroud)
比
new Cat('tom',true,9);
Run Code Online (Sandbox Code Playgroud)
此外,提供默认值更容易,例如使用underscore.js:
function Cat(params) {
var defaults = {'friendly' : true, 'lives' : 9};
params = _.extend(params, defaults);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |