一 代码
- 包装类的区别和基本数据类型的区别是:包装类更像一个构造函数,构造完后是一个对象,而基本数据类型就是基本数据类型。
不难,简单看一下即可,开发时应该用到不多。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
* 不难,注意一下第5点即可。
*
* 基本数据类型
* String Number Boolean Null Undefined
* 引用数据类型
* Object
*
* 1. 在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象
* String()
* - 可以将基本数据类型字符串转换为String对象
* Number()
* - 可以将基本数据类型的数字转换为Number对象
* Boolean()
* - 可以将基本数据类型的布尔值转换为Boolean对象
* 2. 但是注意:我们在实际应用中不会使用基本数据类型的对象,
* 如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果
*
* 3. 包装类的区别和基本数据类型的区别是:包装类更像一个构造函数,构造完后是一个对象,而基本数据类型就是基本数据类型。
*/
// 4. 创建一些 包装类 类型的对象
//num = 3;
var num = new Number(3);
var num2 = new Number(3);
var str = new String("hello");
var str2 = new String("hello");
var bool = new Boolean(true);
var bool2 = true;
//向num中添加一个属性
num.hello = "abcdefg";
//console.log(str === str2);
var b = new Boolean(false);
/*if(b){
alert("我运行了~~~");
}*/
/*
* 5. 方法和属性之能添加给对象,不能添加给基本数据类型,否则会出现属性丢失。
* 当我们对一些基本数据类型的值去调用属性和方法时,
* 浏览器会临时使用包装类将其转换为对象,然后在调用对象的属性和方法
* 调用完以后,在将其转换为基本数据类型。
*
* 所以有时候你像基本类型添加完属性后,打印该属性仍然是undifined。
* 虽然开始转换为对象,但是最后又被转成基本数据类型,所以该属性是不存在的。
* 看下面例子。
*/
var s = 123;
s = s.toString();
console.log(s); // 123,这样转确实是字符串的123.
// 但是添加属性的话,就肯定是错误的。
s.hello = "你好"; // 首先s被转成对象,然后有s.hello="你好",但是最后又转成基本数据类型,所以hello属性没了,故输出undefined。
console.log(s.hello); // undefined
console.log(typeof s); // string
</script>
</head>
<body>
</body>
</html>