js--包装类

原始值本身不是对象,因此逻辑上不应该有方法

引用类型与原始包装类型的主要区别在于对象的生命周期:

在通过new实例化引用类型后,得到的实例会在离开作用域时被销毁,而自动创建的原始值包装对象则只存在于访问它的那行代码执行期间。这意味着不能在运行时给原始值添加属性和方法。

示例:

<script>
    let s1 = "some text";
    s1.color="red":
    console.log(s1.color);//undefined
</script>

这里的第二行代码尝试给字符串s1添加一个color属性。但是第三行代码访问color属性时,它却不见了,原因在于第二行代码运行时会临时创建一个String对象,而当第三行代码执行时,这个对象已经被销毁了,实际上,第三行代码在这里创建了自己的String对象,但这个对象并没有color属性。

 

一、new Number()

示例1:

<script>
        var num = new Number(123);
        console.log(num);

        num.a = 473;
        console.log(num.a);
        console.log(num);
</script>

 

示例2:

 <script>
        var num = new Number(123);
        console.log(num);

        num.a = 473;
        console.log(num.a);
        console.log(num);

        var result = delete num.a;
        console.log(result);

        //对象是可以参与运算的,但是当对象参与完运算后就不再是对象了
        num * 2;
        console.log(num);
</script>

 

二、new String()

<script>
    var str = new String("jack");

        console.log(str);
</script>

 

示例2:

 <script>
        //数组有
        var arr = [1, 2, 3, 4];
        arr.length = 2;
        console.log(arr);
        console.log(arr.length);

        console.log("-----------------");

        var str = 'jack';
        str.length = 2;
        // new String('jack').length=2; 用完后立即销毁 delete

        // new String('jack').length此时已被销毁
        console.log(str);

        //new String('jack').length
        console.log(str.length);
</script>

 

 

示例3:

 <script>
        var str = 'abc';
        str += 1;

        var test = typeof(str); //typeof(str)-->string

        if (test.length == 6) {
            test.sign = 'typeof的返回值可能为String';
            //new String(test).sign='xxx';  用完即删除delete
        }
        //new String(test),sign
        console.log(test.sign);
</script>

 

三、new Boolean()

<script>
     var bol = new Boolean(1);
        console.log(bol);
</script>

 

注意:

  • undefined以及null没有属性

 

  • 原始值没有属性和方法,但是存在隐式转换,这个过程就是包装类
 <script>
        var num = 4;

        num.len = 3;
        //new Number(4).len=3;  用完之后delete(销毁)

        //new Number(4).len 此时len已经在上一步就被销毁了
        console.log(num.len); //undefined
</script>

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值