JavaScript笔记:原始值对象包装类
2018-10-28 22:39
204 查看
版权声明:本人原创文章,转载请注明出处 https://blog.csdn.net/qq_28766729/article/details/83479475
原始值有数字、字符串、布尔值、undefined、null。
但是在JavaScript中,
-
数字可分为:原始值数字,数字类型对象。
-
字符串可分为:原始值字符串,字符串类型对象。
-
布尔值可分为:原始值布尔值,布尔值类型对象。
-
但是undefined、null没有上面这些东西。
可以像下面这样生成原始值对象:
var num = new Number(123); var str = new String('abcd'); var bol = new Boolean('true'); ------------------------ num Number {123} ------------------------ str String {"abcd"} ------------------------ bol Boolean {true}
下面讲讲包装类
在下面代码中,num并不是一个对象,所以它不包含属性和方法,应该报错,但是并没有。
var num = 4; num.len = 3; // 在这里num是原始值,原始值没有方法函数,那怎么办呢 // 创建new Number(4).len = 3; 系统会创建数字类型对象,是为了不让系统报错, 然后会delete console.log(num.len); // 创建new Number(4).len; 同样是为了不报错 ---------------------------------- 输出结果为:undefined
在num.len = 3; 这里,系统会新建一个数字对象new Number(4).len = 3; delete。
让对象的len等于3。然后删除。
当下面语句再访问num.len时,系统又会创建一个new Number(4).len,
但这个对象里面没有值,所以结果会是undefined,这个隐式的环节叫包装类。
来一道测试题:
var str = "abcd"; str.length = 2; console.log(str); -------------------------- abcd
这里字符串abcd并没有被截断,原理同上。
var str = "abcd"; //为不报错,创建new String('abcd').length = 2; delete str.length = 2; //再访问str时,上面一步对str并没有起作用,没影响,所以还是输出abcd。 console.log(str); //而如果这里访问console.log(str.length), //系统会创建,new String('abcd').length,输出其值,4;
再来一道测试题:
var str = "abc"; str += 1; var test = typeof(str); str = "string" if(test.length == 6){ test.sign = "typeof的返回结果可能为String"; } console.log(test.sign); -------------------------------- undefined
输出结果并不是定义好的字符串,而是undefined。解释如下:
var str = "abc"; str += 1; var test = typeof(str); str = "string" if(test.length == 6){ test.sign = "typeof的返回结果可能为String"; //在这创建new String(test).sign = "xxx"; } //当要再次调用test.sign时, //又会创建new String(test).sign,这个对象和上面的没关系。这里为空,输出值为undefined。 console.log(test.sign);阅读更多
相关文章推荐
- [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象
- JavaScript学习笔记2-五种原始数据类型和Object对象类型
- JavaScript学习笔记 - 进阶篇(6)- JavaScript内置对象
- javascript学习笔记三之js对象
- JavaScript复习笔记:Object(对象)
- [Effective JavaScript 笔记]第55条:接收关键字参数的选项对象
- javascript笔记:Date对象及操作方法
- JavaScript 学习笔记(1):关于函数、对象以及面向对象
- JavaScript学习笔记(3)DOM对象和内置对象
- 自学javascript笔记_自用_解析W3school的代码_JS对象
- JavaScript学习笔记:(window对象)
- JavaScript学习笔记8-jQuery简介、jQuery使用详解、DOM对象与jQuery对象的转换与区别
- JavaScript高级程序设计之函数表达式之闭包之关于 this 对象第7.2.2讲笔记
- javascript学习笔记(八):浏览器对象
- 【js学习笔记-022】-- 对象转换为原始值
- 【学习笔记】JavaScript编码规范-对象
- 韩顺平 javascript教学视频_学习笔记26_dom对象(window对象2)
- 学习笔记:javascript 表单对象(form)
- JavaScript学习笔记(6)——JavaScript语法之对象
- [Effective JavaScript 笔记]第48条:避免在枚举期间修改对象