JavaScript速记3 —— 全局对象和包装对象
来源:互联网 发布:jsp加载时调用js 编辑:程序博客网 时间:2024/05/20 18:53
JavaScript中的对象类型包括对象、数组和函数,后续会陆续介绍到。这里我们将介绍两种特殊的对象,全局对象和包装对象。
全局对象
当JavaScript解释器启动时,它将创建一个新的全局对象,并给它一组定义的初始属性:
- 全局属性,例如undefined、Infinity和NaN。
- 全局函数,例如isNaN()、parseInt()和eval()。
- 构造函数,例如Date()、RegExp()、String()、Object()和Array()。
- 全局对象,例如Math和JSON。
在代码的最顶级,可以使用JavaScript关键字this来引用全局对象。在客户端JavaScript中,在其表示的浏览器窗口中的所有JavaScript代码中,Window对象充当了全局对象。这个全局对象有个window属性引用其自身,它可以替代this来引用全局对象。Window对象定义了核心全局属性,但它也针对Web浏览器和客户端JavaScript定义了一少部分其他全局属性。
当初次创建是,全局对象定义了JavaScript中所有的预定义全局值。这个特殊对象同样包含了为程序定义的全局值。如果代码声明了一个全局变量,这个全局变量就是全局对象的一个属性。
包装对象
在介绍包装对象前,首先我们思考下如下代码的执行结果:
var s = "hello";s.len = 4;var t = s.len;console.log(t);这段代码的运行结果为undefined。有两个问题值得我们思考,一个是字符串不是对象,为什么可以设置属性?另外一个问题就是问什么结果是undefined?
首先来看第一个问题,只要引用了字符串s的属性,JavaScript就会将字符串的值通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。同字符串类似,数字和布尔值也有自己的方法,可以通过Number()和Boolean()构造函数创建各自的对象,我们称这样的对象为包装对象。另外,mull和undefined没有包装对象,访问它们的属性会造成一个类型错误。
再来看第二个问题,就然有了包装对象,为什么访问它的属性是返回undefined呢?这是因为包装对象是一个临时对象,一旦属性引用结束,这个包装对象就会被销毁。第三行创建了一个新的临时对象,这时候属性len是不存在的,尝试读取一个不存在的属性值,自然会返回undefined。
为了更好的理解包装对象的含义,思考以下代码的执行结果:
var s = "hello";console.log(s.length); // 5s.length = 2;console.log(s.length); // 5需要注意的是,可以通过String()、Number()或Boolean()构造函数来显式的创建包装对象。JavaScript会在必要时,将包装对象转换成原始值。“==”运算符将原始值和其包装对象视为相等,但“===”运算符将它们视为不等。通过typeof运算符可以看到原始值和其包装对象的不同。
0 0
- JavaScript速记3 —— 全局对象和包装对象
- javascript权威指南--全局对象与包装对象
- JavaScript速记7 —— 对象的属性
- JavaScript速记5 —— 执行环境、变量对象和作用域链
- javascript类型系统——包装对象
- JavaScript的数据类型和包装对象
- javascript包装对象
- JavaScript中的包装对象
- JavaScript Core -- 包装对象
- JavaScript包装对象
- JavaScript中的包装对象
- javascript包装对象
- JavaScript 包装对象
- JavaScript-包装对象
- javascript包装对象
- JavaScript中的包装对象
- JavaScript什么是包装对象
- Javascript 包装对象
- //linux shell 生成 范围 随机整数
- OpenSSL学习笔记:openssl命令行的使用
- 关于JS中的constructor与prototype
- 第20章、OnCheckedChangeListener事件(从零开始学Android)
- 修行__欲望
- JavaScript速记3 —— 全局对象和包装对象
- 第21章、OnItemSelectedListener事件(从零开始学Android)
- pjsip对接已编码的流
- 人这辈子应该这样活,极简主义生活方式
- android.view.WindowLeaked的问题解决
- 生命的长度
- ICML 2014
- 第22章、OnItemSelectedListener事件与二级联动(从零开始学Android)
- VS折叠和展开代码快捷键