繁体   English   中英

将对象/方法分配给变量或新的对象文字

[英]Assigning an object/method to a variable OR a new object literal

在查看Google的书签气泡库的代码时,我发现:

var google = google || {};
google.bookmarkbubble = google.bookmarkbubble || {};

有人可以解释他们在这里做什么,为什么要这样做吗? 由于JS是一种解释型语言,为什么您需要将相同的google对象分配给google变量? 包含在该脚本中的脚本是否不会在每次加载页面时执行一次?

他们正在建立类似名称空间的对象。 如果已经有一个google对象或google.bookmarkbubble对象,他们将确保不替换它。 例如,如果您添加了另一个Google库,则它可能已经设置了一个如下所示的google对象:

{
    somelibrary: {
        ...
    }
}

因此,如果他们只有:

var google = { bookmarkbubble: { ... } }

那会破坏任何引用google.somelibrary代码。 同样,如果他们没有var google = google || {}; var google = google || {}; 并且您尚未定义google ,则google.bookmarkbubble会引发错误。

简而言之,这段代码可确保存在google.bookmarkbubble对象,而不会覆盖任何先前定义的googlegoogle.bookmarkbubble对象。

var google = google || {}; 是的简写语法

if (!google) {
  google = {};
}

这样可确保第二次分配不会失败,因为google至少是一个空哈希。

当一个库包含许多用户可能包含或不包含的文件时,通常会执行此操作。 第一个库会将google初始化为一个空对象(因为它的结果为空),随后的库将保留已经添加到该对象的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM