点击切换帐号登陆
帐号密码登陆

对象/基本类型/字面量之间的区别

1.JavaScript对象,基本类型和字面量之间的区别
=====================================

**知识点**
1.基本类型
2.包装器
3.包装对象

----------------------------------------------------

1.基本类型
--------
- *基本类型*: 有5个:
    + 数值型(Number): 构造器函数(`Number()`)
    + 字符型(String): 构造器函数(`String()`)
    + 布尔型(Boolean): 构造器函数(`Boolean`)
    + Undefined: 无构造器
    + Null: 无构造器

----------------------------------------------------

2.包装器
-------
- *包装器*: 基本类型构造器的别名

----------------------------------------------------

3.包装对象
--------
- *包装对象*: new 实例化包装器生成的对象


> 背景知识:

> 变量在内存中有二种存储方式: 值存储, 引用存储(地址)

### 字符串类型
- 字面量: `var str = 'admin'`  或 `var str = String('admin')` // 值
- 构造函数: `var str = new String('admin')` // 引用

> 其它类型与之类似

----------------------------------------------------

### 示例代码: code/demo01.html

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>对象,基本类型和字面量之间的区别</title>
</head>
<body>
<script>
    //字面量
    var str1 = 'This is a string';
    var num1 = 123.456;
    var bool1 = true;

    // 包装器
    var str2 = String('This is a string');
    var num2 = Number(123.456);
    var bool2 = Boolean(true);

    // 基本类型是基于值(即字面量)进行严格比较
    console.log(str1 === str2 ? '相等' : '不相等');
    console.log(num1 === num2 ? '相等' : '不相等');
    console.log(bool1 === bool2 ? '相等' : '不相等');

    // 包装对象
    var str3 = new String('This is a string');
    var num3 = new Number(123.456);
    var bool3 = new Boolean(true);

    // 为基本类型创建包装对象, 对象与基本值类型不同,所以不全等
    console.log(str1 === str3 ? '相等' : '不相等');
    console.log(num1 === num3 ? '相等' : '不相等');
    console.log(bool1 === bool3 ? '相等' : '不相等');

    // 查看类型
    console.log(typeof str3);
    console.log(typeof num3);
    console.log(typeof bool3);

    //如何才能相等呢? 只能与包装对象的基本值"valueOf()"比较才有意义
    console.log(str1 === str3.valueOf() ? '相等' : '不相等');
    console.log(num1 === num3.valueOf() ? '相等' : '不相等');
    console.log(bool1 === bool3.valueOf() ? '相等' : '不相等');

    // 为基本类型创建包装对象是没有意义,如果想在字面量上调用包装对象上的属性和方法
    // 系统会临时自动将基本类型转为包装对象,并在此上面调用属性和方法,执行完毕自动释放
    // 现代IDE编辑器,如果你直接实例化一个包装器创建基本类型值时,会输出警告,使用包装器替换
    // 如
    var n = new Number(100);
    // 自动提示警告,并替换成
    var n = Number(100);
</script>
</body>
</html>
```


任务

?不会了怎么办
无数据提示暂无评论哟...我要评论
网站导航
标签地图
学习路径
视频教程
开发软件
旗下子站
php中文网
phpstudy
技术文章
文档工具
关于我们
企业合作
人才招聘
联系我们
讲师招募
QQ交流群
QQ官方交流群
微信公众号
微信公众号