12.JavaScript学习笔记——包装类

包装类

原始值是不能有属性和方法的,但是数字可以分为原始值数字和数字对象,var num = new Number(123)则是一个数字对象,此时可以往该对象中添加属性或方法,并且可以像原始值一样参与运算,但是运算完成后又会变回原始值。

new Number(), new String(), new Boolean()可以将对应类型的原始值转化为对象。

//包装类
var num = 3;
num.len = 4;   //1. new Number(3).len = 4;   2. delete num.len;
console.log(num.len);  //1. new Number(3).len; 2. 对象没有的属性返回undefined

同样,对于string和boolean类型的值,也有类似的性质。

var str = 'abcd';
str.length = 2;  //1. new String('abcd').length = 2;  2. delete str.length;
console.log(str);  //abcd
console.log(str.length);  //new String('abcd').length  而.length属性对象字符串本身就有 因此该值为4

上例如果对于数组,就会有截断效果,但是对于原始值是做不到的。

在调用length的时候, JS引擎会先对原始类型数据进行包装 new String(“abcd”)
然后对其方法进行调用 new String(“abcd”).length

对于数字类型和布尔类型的原始值,进行包装产生的对象仅有[[Prototype]]和[[PrimitiveValue]]两个属性。

但是对于字符串类型

例如

var str = 'abcd';
new String(str);

产生对象

str{
    0: "a"
    1: "b"
    2: "c"
    3: "d"
    length: 4
    [[Prototype]]: String
    [[PrimitiveValue]]: "abcd"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值