JavaScript第二讲 全局对象和包装对象
全局对象
全局对象的属性是全局定义的符号。当加载任何新页面的时候,就会有全局对象产生(其实也就是this),
并会被赋予一组初始属性:
- 全局属性:如undefiend、Infinity和NaN
- 全局函数:如isNaN()
- 构造函数:如Object()和Date()
- 全局对象:如Math
当被创建的时候,全局对象就定义了JavaScript中所有的预定义全局值。
包装对象
JavaScript对象是一种复合值:是属性和已命名值的集合。通过a.b()来调用。
对于我们常见的字符串
let str = "hello";
let w = str.substring(s.indexOf("h") + 1, str.length());
字符串不是对象,为什么能调用方法。因为当执行第二条语句的时候,会调用new String(str)来转换成对象,来的处理属性的引用,引用结束后,新创建的对象就会被销毁。数字和布尔值也类似。
null和undefined没有包装对象
思考
let str= "test";
s.len = 4;
let t= s.len;//?
当执行这段代码时,t为undefiend。原因是因为,当第二行语句执行完后,就会销毁这个对象。第三行读取的话,就会发现不存在,即undefined。这段代码说明,在读取字符串、数字和布尔值的属性和方法的时候,表现的像对象一样。
如果想给属性赋值,则会忽略,因为修改是发生在临时对象上的,而这个临时对象会在下一步被销毁。
存取字符串、数字和布尔值的属性时,创建的临时对象乘坐包装对象。
需要注意的是,可通过String()、Number()或Boolean()构造函数来显示创建包装对象,JavaScript会在必要的时候将包装对象转为原始值。