本文共 1094 字,大约阅读时间需要 3 分钟。
本人是个新手,写下博客用于自我复习、自我总结。 如有错误之处,请各位大佬指出。 学习资料来源于:尚硅谷
在之前,创建一个Number类型的:var num = 3;
var num = new Number(3);
看到Number
大写,就知道又是构造函数,也就意味着从基本数据类型的数据转换成了对象 但是如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果。 上图显然不是我们要的结果。所以我们不会用基本数据类型的对象,因为这种方式繁琐又可能会出错。那为什么这种构建方式会存在?因为这种方式是给计算机自己用的。我们知道,方法和属性只能添加给对象,不能添加给基本数据类型: var s = 123; //基本数据类型s.hello = "你好";console.log(s.hello); //undefined
如果上述说法成立,那么之前的类型转换是怎么转的?s=s.toString();
原因是:
所以,s=s.toString();
它首先是将s
转成了Number对象,调用了toString()
方法,然后又转回了基本数据类型(同时注意这是临时包装,在包装完之后,Number对象也就被销毁了)。正是因为它是临时使用,所以上述的s.hello
才会输出undefined。 其实,在底层字符串是以字符数组的形式保存的。所以字符串的相关方法也会包含数组的一些性质。
转载地址:http://poyki.baihongyu.com/