“{}”在下面的函数中是什么意思?

4

我对其中一些代码有所了解,但是"{}"代表什么意思呢...??

var Accordion = function(el, multiple) {
        this.el = el || {};
        this.multiple = multiple || false;

        // Variables
        var link = this.el.find('.link');
        // Eventos
        link.on('click', {el: this.el, multiple: this.multiple},this.dropdown)
    }

如果未定义,则将 el 转换为对象,否则保持不变。 - Muhammad Umer
在 JavaScript 中,{} 被称为 对象字面量表示法 - balajisoundar
3个回答

8
在这个语境中,{}表示一个空的Javascript对象(与new Object()相同),没有自定义属性或方法。
因此,这个语句是:
// if el contains a value, do this.el = el, otherwise init this.el to an empty object
this.el = el || {};

"逻辑上等价于这个:"
if (el) {
    this.el = el;   // initialize from function argument
} else {
    this.el = {};   // initialize to an empty object
}

或者说,如果 el 包含一个非空/非null的真值,则将其分配给 this.el;否则,使用一个空对象初始化 this.el。
这是一种快捷表示法,用于使用列表中的第一个真值来初始化变量,因为JavaScript的 || 运算符会一直计算,直到找到第一个真值操作数,然后停止计算并将该操作数作为值。

2
这意味着一个没有方法或属性的JavaScript对象。

1
// if "this.el" didn't exist, assign it to an empty object {}
this.el = this.el || {};
console.log(el);

尝试在这里:http://goo.gl/CkRlNB

这是错误代码的解释。这是一个常见的设计模式,但不是OP问题的所在。OP的代码是this.el = el || {};,它执行与您的代码和解释不同的操作。也许赞同者没有意识到这甚至没有回答问题。 - jfriend00
我同意这是不同的,但我回答的是它的通用用途,而不仅仅是特定代码。我认为这会更有帮助。只有一行代码,我相信原帖作者会意识到差异并思考一下。 - ngduc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接