了解js中window对象的基本原理(小白理解笔记)

想要了解window对象,需要先了解ECMA-262定义的内置对象Global。

什么是内置对象?

ECMA-262对内置对象的定义是"由ECMAScript实现提供 与宿主环境无关,并且在ECMAScript程序开始执行时就存在的对象." (开发者不需要显式地实例化内置对象,他们已经实例化好了 类似于开箱即用)


 Global对象

代码不会显式地访问Global对象.  ECMA-262规定Global对象为一种兜底对象,它所针对的是 不属于任何对象的属性和方法.( 如 isNaN() isFinite() parseInt() parseFloat()这些函数在Global对象中 属于全局函数 可以直接使用 无需程序员定义 )

在全局作用域定义的变量和函数,都会成为Global对象的属性.

  • Global对象上 还有另外的一些方法

1. URL编码方法 encodeURI() 和 encodeURIComponent() 方法用于 编码统一资源标识符URI (可以理解为资源的身份证号)

2.eval()方法 它是一个完整的ECMASript解释器.它接收一个参数,即一个要执行的JS字符串.

eval("console.log('hi')");
// 上面代码功能和下面一行等价
console.log('hi');
  • Global对象属性

Global对象有很多属性, 像 undefind NaN Infinity等特殊值,都是Global对象的属性。 所有原生引用类型的构造函数 如Object Function也都是Global对象的属性。(所以这些特殊值和构造函数都可以直接用如 new Object())


window对象: 虽然ECMA-262没有规定 直接访问Global对象的方式,但浏览器将window对象实现为Global对象的代理. 因此所有全局作用域中 声明的变量和函数都成为了window的属性.

var color = "red";
function sayColor(){
  console.log( window.color );
}
window.sayColor();//red

什么时候可以省略window,什么时候建议些上?

在 JavaScript 中,window 对象是浏览器提供的全局对象,代表浏览器的窗口。它包含了许多全局属性和方法,例如 alert()、setTimeout()、location 等。同时,浏览器将window对象实现为Global对象的代理. 因此所有全局作用域中 声明的变量和函数都成为了window的属性.

    1. 什么时候可以省略 window
当使用 window 对象的属性和方法时,如果这些属性或方法是全局变量或函数,那么可以省略 window。

常见例子:

// 直接调用 alert 和 setTimeout,这时 window 可以省略
alert("Hello, world!"); // 等同于 window.alert("Hello, world!");

setTimeout(() => {
  console.log("1秒后执行");
}, 1000); // 等同于 window.setTimeout

console.log(location.href); // 等同于 window.location.href


原理:

        •        window 对象的属性和方法会自动作为全局对象的一部分加入到 JavaScript 执行环境中,因此可以直接使用。

     2. 什么时候推荐使用 window 显式调用

        最佳实践:如果不确定是否存在同名冲突,或者在代码可读性上想要明确,建议使用 window 显式调用属性和方法。

  var myBtn = document.getElementById('btn');
        myBtn.addEventListener('click',function(){
            //当前页面中打开
            window.open("https://habitica.com/","_self");
        })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值