我一直在我的项目中使用这些行,但我不知道它到底是什么意思,谁能告诉我它到底是什么意思。
var myObject = window.myObject || {};
(function () {
//....my logic will go here
}).call(myObject);
var myObject = window.myObject || {};
这宣告了全球范围的myObject
。如果它在获取现有值之前就已存在,或者如果不存在,则将其分配给新的空对象(继续阅读(。如果多个脚本分配同一对象的属性,这是一种常见的技术,因此首先执行哪个脚本并不重要,它们最终将始终得到相同的结果。
(function() { }).call(myObject)
这是一个IIFE上下文得到myObject
,它允许您轻松地写入对象
this.someProp = someValue;
IIFE 还确保您在函数中声明的变量,例如:
var someValue = 1;
不是全局范围的一部分,因此它们不会污染全局命名空间。
var myObject = window.myObject || {}; // 1
(function () { //2
//....my logic will go here
}).call(myObject); //3
- 从
window
(DOM 窗口(对象的现有myObject
属性创建一个名为myObject
的变量,或者,如果不存在,则创建新的空对象 ({}
(。 - 声明立即调用的函数表达式 (IIFE(。
- 通过提供先前创建的对象(或从
window
检索(如果在那里可用(myObject
调用 IIFE。
请注意,在 IIFE 中,您可以根据需要访问myObject
。在下面的代码片段中,请参阅打印的对象是如何使用键custom
和value
关联的值创建的。
var myObject = window.myObject || {
custom: 'value'
};
(function() {
console.log(myObject);
}).call(myObject);