javascript包装类

包装类

基本数据类型:String,Number,Undefined,Boolean,Null
引用类型:Object,Array,Date,RegExp
只有对象才有属性和方法,原始值不能有属性和方法
为什么平时开发中给原始值添加属性不会报错呢?
代码分析:

     1.
     var num = 4;
     num.length= 3;
     console.log(num.length);//undefined
     //原始类型为啥添加属性不会报错呢,当我们num.length的时候,
     //内部隐式的发生一个过程,new Number(4).len = 3; 就是内部
     //会新建一个数字对象然后把4赋值进去,之后就会把这个对象delete
     //当我们访问num.length的时候,系统会再创建一个数字对象把
     //4赋值进去,这次的数字对象和上次的数字对像是两个对象(上次的已经销毁)
     //所以此时的数字对象并没有length属性,所以就返回undefined
     //这个隐式的中间环节就叫做包装类
     2.
     var str = "abcd";
     str.length = 2;
     console.log(str.length);//4
     //当我们str.length的时候,str并没有length属性,此时系统就会
     //new ("abcd").length = 2;然后销毁,当我们再去str.length的
     //时候,系统会new ("abcd").length,此时对象字符串有length属性
     //所有就返回4

练习题:

     var str = "abc";
     str += 1;
     var test = typeof (str);
     if(test.length == 6){
        test.sign = "typeof的返回结果可能为String";
     }
     console.log(test.sign);//undefined

你可能感兴趣的:(javascript包装类)