[英]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
对象,而不会覆盖任何先前定义的google
或google.bookmarkbubble
对象。
var google = google || {};
是的简写语法
if (!google) {
google = {};
}
这样可确保第二次分配不会失败,因为google
至少是一个空哈希。
当一个库包含许多用户可能包含或不包含的文件时,通常会执行此操作。 第一个库会将google
初始化为一个空对象(因为它的结果为空),随后的库将保留已经添加到该对象的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.