JavaScript window 对象 —— 容易惹麻烦的小伙子

window 对象


JavaScript 有一个全局对象,那就是 window,这个对象能够绑定你所有的自定义变量、函数,包括系统默认的函数,比如 alert(),下面简单看一下 window 的功能(本文的 window 仅作为全局对象,对于 BOM 中的 window 不做介绍)

function func8(){
    
    
    console.log("Hello world!");
}

var new_func8 = window.func4;
new_func8();					//输出 Hello world!

可以看到我们自定义的函数直接被赋值给 new_func4,以后我们使用 new_func4 相当于使用 func4(),再比如:

window.alert = function () {
    
    
    console.log("I'am alert function!");
}

alert();						//I'am alert function!

我们直接把系统函数 alert() 给干掉了!



由于 window 可以代表我们任何的变量,所以很容易造成冲突。比如两个程序猿同时写了两个一样名称的函数,都用 window 绑定,那最终结合的时候,请问 window 该调用哪个函数呢?

//第一个 JS 文件
function func9() {
    
    
    console.log("Hello Python!");
}
//第二个 JS 文件
function func9() {
    
    
    console.log("Hello Java!");
}
<!-- 测试用的 HTML 文件 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数</title>
    <script src="JS/function.js"></script>
    <script src="JS/function2.js"></script>
    <script>
        window.func9();
    </script>
</head>
<body>


</body>
</html>

控制台输出:

29

输出完全看程序的心情(当然不会报错哈,JavaScript 还能报错那你写的代码得多离谱!)



为了避免这种迷惑行为,我们强烈推荐使用自定义的全局变量!

var MyWindow = [];				//定义一个全局变量(写在函数外,并用 var 声明的就是全局变量,不要忘了哦)

//以后将本文件所有的函数、变量都绑定到 MyWindow 上面
MyWindow.func10 = function () {
    
    
    console.log("I'am func1");
}

//将变量绑定到我们自定义的全局对象中
MyWindow.name = "Mike";

猜你喜欢

转载自blog.csdn.net/qq_52174675/article/details/122647622
今日推荐