将所有函数绑定到窗口对象有什么用
Whats the use of binding all function to window object?
我对JS很陌生,我在这里有一个疑问。假设我有一个这样的函数:
function test(a) {}
这可以通过 window
访问,因此这样做:
window.test
我可以调用该函数。但是将所有函数绑定到对象的目的是什么window
呢?有什么好处吗?
我有几个问题:
- 何时创建此
window
对象?是每页吗? - 是否有任何函数,不会绑定到
window
-
window
甚至可以访问私有变量、函数?
提前谢谢。
窗口对象是浏览器窗口 (1)。或者现在的选项卡。它是浏览器设置的系统对象。在global scope
中创建的所有函数和表达式都绑定到 window 对象 (2)。JavaScript 不能像 c 或 Java 那样创建私有变量。但是,当值位于closure
中时,无法通过窗口对象 (3) 访问该值。
闭包:具有自己作用域的函数。闭包允许使用仅适用于函数的私有变量
请考虑以下代码:
var createClosure = function() {
var a = 0;
return function() {
a++;
return a;
};
};
var a = createClosure();
a(); //displays 1
a(); //displays 2
现在有两个a
。一个a
是只能通过createClosure()
访问的私有变量,另一个a
是window
对象的属性(全局可访问),并且是对createClosure
中返回函数的引用。您无法全局访问第一个a
。
在函数中,定义变量时需要使用 var
关键字。如果不是,它们就会成为全球性的。
窗口是全局范围,所以这样做
var something = 'hi';
// or
window.something = 'hi';
// product the same result.
通常,将变量添加到全局范围被认为是不好的,您应该使用闭包来创建对象/模块,以便将创建的全局数保持在最低限度。
var myModule = (function () {
var something; // private, only accessable in this function
return {
someOtherThing : 'some value';
// public, accessed with myModule.someOtherThing
}
})();
在上面的例子中,只有window.myModule是全局的,内部变量/函数不是
每个变量或函数都可以使用窗口"关键字"访问,因为窗口是javascript中的超全局变量。
- 窗口
- 对象是指您的窗口。
- 不。您可以调用任何带/不带窗口的函数(如果它在范围内,则不带窗口)
- 如何在javascript中创建私有变量?如果您谈论的是存储在带有"new"关键字的变量中的函数,那么不,窗口对象无法访问这些"私有"变量。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 什么是“;原型;通过JavaScript中的Object Literal Notation创建的对象的链接
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- 我需要使用什么语法来向一个对象的成员添加一个临时数组,该成员等同于一个字符串的通用列表
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 什么是'值是引用'表示JavaScript对象
- localStorage-对象的getter-, setter-方法的目的是什么?
- 什么是 ClojureScript 类似地将不存在的对象值设置为 JavaScript 中的 null
- 返回多个变量的 JavaScript 函数:数组与对象.最佳实践是什么
- Javascript:将类/对象引用设置为 NULL,内存中的子对象/类会发生什么
- 通过传递日期来创建Javascript Date对象?什么是dateString