在对象构造函数中使用对象文字表示法的好处
Benefits of using object literal notation in an object constructor?
我正在努力理解JS的细节,并看到了许多将对象文字传递到构造函数中的例子。这种方法的好处是什么?我将如何创建我的对象来使用这种方法?
例如:
myTooltip = new YAHOO.widget.Tooltip("myTooltip", {
context: "myContextEl",
text: "You have hovered over myContextEl.",
showDelay: 500
});
假设我正在创建一个简单的类。许多简单的OO教程都提出了类似的东西
myCat = new Cat();
myCat.name = "fluffy";
myCat.friendly = true;
myCat.lives = 9
与相反
myCat = new Cat({
name: "fluffy",
friendly:true,
lives: 9
})
如何创建Cat对象以使用这种方法?
function Cat(params) {
this.name = params['name'];
this.friendly = !!params['friendly'];
//etc
}
var tom = new Cat({'name' : 'tom', 'friendly' : 'true'});
好处是您可以获得命名参数(如果您收到很多命名参数,则无需记住顺序)。
对我来说也是更可读的
new Cat({'name' : 'tom', 'friendly' : 'true', 'lives' : 9});
比
new Cat('tom',true,9);
此外,提供默认值更容易,例如使用undercore.js:
function Cat(params) {
var defaults = {'friendly' : true, 'lives' : 9};
params = _.extend(params, defaults);
}
在您的第一个YUI示例中,对象文字只是用作选项的字典。在没有命名参数并且函数需要许多参数的语言中,它很有用。此外,在JavaScript中以这种方式使用默认值也更容易。
举以下例子:
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({});
这种方法是出于实际目的。
相关文章:
- 文字与原型对象表示法的数据结构
- JavaScript对象表示嵌套对象未定义
- ES6对象简写表示法可以与常规对象表示法相结合吗
- Javascript错误消息,自定义对象表示
- Javascript - 对象表示法脚本与面向对象脚本
- JavaScript对象表示法是正确的JSON吗
- 如何用对象表示法调用内部javascript函数
- 在webpack中创建多个块时,数组表示法和对象表示法之间的区别是什么
- 如何将可为null的json对象表示为单个字符串
- Javascript函数转换为传递变量的对象表示法
- jQuery选择器到JSON对象表示
- HTML输入名称中的Js对象表示法
- 不同Javascript对象表示法的名称
- 这个字符串作为Javascript对象表示什么?
- 使用JavaScript对象表示法访问json值
- 将多层PHP数组转换为Javascript对象表示法
- Javascript对象表示格式
- 图形化地图对象表示网站
- DOM元素的对象表示法
- 使用对象表示法向对象添加方法