【问题标题】:javascript variables, What does var x = a = {} do?javascript变量,var x = a = {}有什么作用?
【发布时间】:2010-11-09 04:00:19
【问题描述】:

我在 jQuery 中看到这样的内容:

jQuery.fn = jQuery.prototype = {}

为什么要这样做?这不就是说jQuery.prototype = {}吗?我不确定我是否理解 Resig 在这里完成的工作。

【问题讨论】:

    标签: javascript variables syntax


    【解决方案1】:

    同:

    jQuery.prototype = {}
    jQuery.fn = jQuery.prototype
    

    在我看来,将所有内容放在一行中更清楚地表明您为两个变量分配了相同的值

    【讨论】:

      【解决方案2】:

      这相当于:

      jQuery.prototype = {}
      jQuery.fn = jQuery.prototype
      

      换句话说,jQuery.fn 和 jQuery.prototype 都指向同一个对象。

      【讨论】:

        【解决方案3】:

        语句x = a = {} 表示{} 被分配给aa 被分配给x。所以它等于a = {}; x = a

        【讨论】:

        • 是的,但在他的示例中,jQuery.fn 已经与 jQuery 和 jQuery.prototype 相同。 fn 只是原型的快捷方式。
        【解决方案4】:

        要知道的是,在 javascript 中,每个表达式都有一个返回值,无论它是否有任何副作用(赋值)

        从右到左,你有以下语句:

        (jQuery.fn = (jQuery.prototype = ({})))
        

        评估第一部分给出一个空对象:{}:

        (jQuery.fn = (jQuery.prototype = {}))
        

        第二条语句执行并将 jQuery.prototype 设置为 {},并计算为 jQuery.prototype,给出第二部分:

        (jQuery.fn = jQuery.prototype)
        

        将 jQuery.fn 设置为 jQuery.prototype,然后计算结果为:

        jQuery.fn
        

        什么都不做。

        【讨论】:

        • 评估第一部分会产生一个空对象(不是“数组”)——这可能是一个重要的区别。
        • 其实是jQuery.fn = jQuery.prototype,不是jQuery.fn = {},因为jQuery.fn和jQuery.prototype应该是别名的。
        • 在 javascript 领域中数组/表/对象不是一回事吗?有一阵子了。无论如何,我已经更新了我的答案。
        • 它们本质上是相同的,但是数组对数字属性有特殊的行为(基本上,当你分配一个不存在的数字索引时,长度会自动调整)。数组也有一个单独的原型,用于获取切片、映射、排序等。
        猜你喜欢
        • 1970-01-01
        • 2018-10-21
        • 2015-05-27
        • 1970-01-01
        • 2019-04-04
        • 2023-03-27
        • 2012-10-05
        • 1970-01-01
        • 2019-09-11
        相关资源
        最近更新 更多