JS对象:包装类

我们在实际应用中一般不会使用基本数据类型的对象
下面一大堆主要是解释 下面代码例子

    // 为什么这个a能调用特定属性和方法?
    var a = 123;
    console.log(a.toString());  // 123

内置对象简介

JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器对象。

前面两种对象:是JS的基础内容,属于 ECMAScript; 第三个浏览器对象:属于JS独有,即 JS 内置的API。

内置对象:就是指这个语言自带的一些对象,供开发者使用,这些对象提供了一些常用或者最基本而必要的功能(属性和方法)。

内置对象最大的优点就是帮助我们快速开发。

JavaScript的内置对象

内置对象对象说明
Arguments函数参数集合
Array数组
Boolean布尔对象
Math数学对象
Date日期时间
Error异常对象
Function函数构造器
Number数值对象
Object基础对象
RegExp正则表达式对象
String字符串对象

基本数据类型不能绑定属性和方法

属性和方法只能添加给对象,不能添加给基本数据类型。

注意,基本数据类型string无法绑定属性和方法的。比如说:

    // 基本数据类型
    let str1 = 'hello';
    // 对象
    let str2 = new String('hello');

    str1.name = 'tom';
    str2.name = 'tom';

    console.log(typeof str1); // 打印结果:string
    console.log(typeof str2); // 打印结果:object

    console.log(str1.name); // undefined
    console.log(str2.name); // tom

当然,我们可以打印 str1.lengthstr1.indexOf("m")等等。因为这两个方法的底层做了数据类型转换(临时string 字符串转换为 String 对象,然后再调用内置方法),也就是我们在下面讲到的包装类

基本包装类型

我们都知道,js 中的数据类型包括以下几种

  • 基本数据类型:String、Number、Boolean、Null、Undefined
  • 引用数据类型:Object

JS 为我们提供了三个基本包装类型

  • String():将基本数据类型字符串,转换为 String 对象。
  • Number():将基本数据类型的数字,转换为 Number 对象。
  • Boolean():将基本数据类型的布尔值,转换为 Boolean 对象

包装类型介绍

  • 专门封装原始类型的值,并提供操作值得API的对象。
  • 包装类型,根本就不用你用,他都是自动创建,自动销毁
  • 在试图用原始类型的值,调用函数时,会自动创建对应类型的包装类型对象,调用完函数后自动释放

通过上面这这三个包装类,我们可以将基本数据类型的数据转换为对象

    let str1 = 'hello';
    let str2 = new String('hello');

    let num1 = 3;
    let num2 = new Number(3);

    let bool1 = true;
    let bool2 = new Boolean(true);

    console.log(typeof str1); // 打印结果:string
    console.log(typeof str2); // 注意,打印结果:object

    console.log(typeof num1); // 打印结果:number
    console.log(typeof num2); // 注意,打印结果:object

需要注意的是:我们在实际应用中一般不会使用基本数据类型的对象。如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果。

比如说:

var boo1 = new Boolean(true);
var boo2 = new Boolean(true);

// boo1和boo2是对象   对象比较的是内存地址
console.log(boo1 == boo2); // 打印结果竟然是:false

再比如说:

var boo3 = new Boolean(false);

// boo3是对象  隐式转换为true
if (boo3) {
    console.log('hello'); // 这行代码竟然执行了
}

基本包装类型的作用

当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将基本数据类型转换为引用数据类型,这样的话,基本数据类型就有了属性和方法,然后再调用对象的属性和方法;调用完以后,再将其转换为基本数据类型。

举例:

var str = 'hello';

// 这就是为何基本数据类型能调用length属性
console.log(str.length); // 打印结果:5

比如,上面的代码,执行顺序是这样的:

// 步骤(1):把简单数据类型 string 转换为 引用数据类型  String,保存到临时变量中
var temp = new String('hello');

// 步骤(2):把临时变量的值 赋值给 str
str = temp;

//  步骤(3):销毁临时变量
temp = null;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值