包装类:

什么是包装类:
Number() 、String() 、 Boolean() 函数分别是数字,字符串,布尔值的包装类。
很多编程语言都有“包装类”的设计,包装类的目的就是为了让基本类型可以从它们的构造函数的prototype上获得方法。

见案例:

        var a = new Number(123);
        var b = new String('慕课网');
        var c = new Boolean(true);

        console.log(a); // Number {123}
        console.log(typeof a); // object

        console.log(b); // String {"慕课网"}
        console.log(typeof b); // object

        console.log(c); // Boolean {true}
        console.log(typeof c); // object

注意:面试的时候经常问console.log(typeof a);,所以要牢记类型是Object。

还有:虽然它们的类型是Object但它们还是可以进行基本的运算:
见代码:

        var a = new Number(123);
        var b = new String('慕课网');
        var c = new Boolean(true);

        console.log(a);
        console.log(typeof a);

        console.log(b);
        console.log(typeof b);

        console.log(c);
        console.log(typeof c);

        console.log(a + 5); // 128
        console.log(b.slice(0,2)); // 慕课
        console.log(c && true); // true

再看一个案例:

        var d = 100;
        console.log(d.__proto__ == Number.prototype); // true
        var s = 'aaaa';
        console.log(s.__proto__ == String.prototype); // true
        var f = false;
        console.log(f.__proto__ == Boolean.prototype); // true

通过上面的案例我们就能知道为什么字符串可以打点调用slice等方法了,就是因为在包装类的原型上有这些方法,所以可以通过原型链查找到,因此可以打点调用了,见下面代码验证:

        var s = 'aaaa';
        console.log(s.__proto__ == String.prototype); 
        console.log(String.prototype.hasOwnProperty('slice')); // true
        console.log(String.prototype.hasOwnProperty('substring')); // true

总结:
1、Number()、String()、Boolean() 的实例都是Object类型,它们的PrimitiveValue属性存储它们的本身值,还有要注意一点,这个PrimitiveValue不能直接打点调用,因为它是一个内部属性。
2、new出来的基本类型值可以正常参与运算
3、包装类的目的就是为了让基本类型值可以从它们的构造函数的Prototype上获取方法。
4、包装类是对于基本类型值的面向对象的一种体现,所以像undefined null 是没有包装类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值