包装类

773 阅读2分钟

铺垫 // 对象有属性和方法,原始值没有属性和方法,经过包装类的过程

概念:

包装对象

包装对象,就是当基本类型以对象的方式去使用时,JavaScript会转换成对应的包装类型,相当于new一个对象,内容和基本类型的内容一样,然后当操作完成再去访问的时候,这个临时对象会被销毁,然后再访问时候就是undefined。

 因为有了基本包装类型,所以JS中的基本类型值可以被当作对象来访问;

基本类型特征:

 // 1.每个包装类型都映射到同名的基本类型;

 // 2.在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象,从而方便了数据操作;

 // 3.操作基本类型值的语句一经执行完毕,就会立即销毁新创建的包装对象;

———————————————— 版权声明:本文为CSDN博主「Carina_best」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/kuangruike/…

number,string,boolean都有对应的包装类型。

       var num = 123;//原始值没有属性和方法                   
       var num = new Number(123);//构造函数打印出对象123-->Number{123}
       能加属性(图num.abc)能参与运算如num*2=236,但是又变回了数字类型,不再是对象了
       var num = new String('wxyz');//字符串类型的对象
       var bol = new Boolean('true'); //布尔

对象Number123.jpg

包装类-字符串.jpg 包装--布尔.jpg

例子

var str= "abcd";
str.abc = "a";//

例1,经历包装类就能用属性和方法

   var num = 4;
   num.len = 3;
   console.log(num.len);//undefined-->//number不带.length属性
#### //num没有length,随便赋予的**。
   //系统会新建一个数字对象,令数字对象的len=3->//new Number(4).len = 3;
   操作完成后会delete删除这个长度,再访问len会再一次新建一个数字对象new Number(4).len=3;访问len,没有len,返回undefined。这个隐式的环节就是包装类

例2

// var arr=[1,2,3,4];本身数组就有长度,也可以截断arr.length为4,arr.length=2;回车长度变为2;

var str ="abcd";
str.length = 2;//没有length属性

// 所以 访问.length-->系统模拟 new String("abcd").length = 2;
---->截断为2,delete销毁新建的abcd
//-->new String有length属性,就是字符串长度4,抛回4

// console.log(str);//所以仍然是abcd
#### // console.log(str.length);//4----->因为对象的字符串自带.length这个属性

屏幕截图 2021-05-29 194955.jpg

例3

var str = "abc";
    str+=1;
    var test=typeof(str);//test="string"
    if(test.length=6){//test没有length,会调用包装类返回66=6,往下走
        test.sign="typeof返回结果String";//赋值不赋值都一样
        //new String(test).sign="xxxx";
    }    
      console.log(test.sign);//访问再new String(test).sign  ----undefined