原始值没有属于自己的方法和属性,当给它们添加属性的时候系统会自动进行包装类并在创建之后马上销毁(即new Number(xxx).property = xxx; delete xxx;)
如var num = 123;只代表num这个变量的值是123。
有三种系统内置的构造函数
new Number() //转换为数字对象
new String() //转换为字符串对象
new Boolean() //转换为布尔对象
undefined 和 null 不能设置任何的属性和方法
举例说明包装类的解析步骤
//example1
var num = 4;
num.len = 3; //实际上原始值num并没有len这个属性
// 隐式的中间环节:
// 1. new Number(4).len = 3;
// 2. 马上 delete num.len;
// 3.(在执行console.log之前)new Number(4).len
console.log(num.len); // 输出结果为undefined
输出undefined的原因是:查看对象的属性时,如果该属性没有被定义,不会报错,会返回undefined。参考 JavaScript对象
另举例:
//example2
var str = 'eleven';
str += ‘twelve’;
var test = typeof(str);
if(test.length == 6){
test.result = "typeof的返归结果为string";
}
console.log(test.result); //输出结果为undefined
console.log(str); //输出结果为eleventwelve