<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
<script>
// 基本数据类型
// 基本数据类型直接在栈内存中存储
// 值与值相互独立,修改一个不会影响其他变量
var a = 5;
var b = a;
a++;
console.log("a="+a);
console.log("b="+b);
// 输出:a=6,b=5
// 引用数据类型(对象)
// 引用数据类型(对象)保存在堆内存中
// new意味着在堆内存中开辟新空间
// 内存里开辟空间会有内存地址
// 所以变量保存的是内存地址(对象的引用)
// 如果两个变量保存的是同一个对象的引用
// 当一个通过一个人变量修改属性时,另一个也会受到影响
// 通过地址操作(图一)
var obj = new Object();
obj.name = "猪八戒";
var obj2 = obj;
obj.name = "孙悟空";
console.log(obj.name);
console.log(obj2.name);
// 输出:obj=孙悟空,obj2=孙悟空
// 设置obj2为null(图二)
// obj不受影响,obj2为null
obj2 = null;
console.log(obj);
console.log(obj2);
</script>
</head>
<body>
</body>
</html>
图一
图二