基本和引用数据类型以及对象字面量(day14)
一、基本和引用数据类型
1. 基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object
2. JS中的变量都是保存到栈内存中
基本数据类型的值直接在栈内存中存储,
值与值之间时独立存在,修改一个变量不会影响其他变量
3. 对象(引用数据类型)是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间
而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,
当一个通过一个变量修改属性时,另一个也会受到影响
4. 当比较两个基本数据类型的值时,就是比较值
而当比较两个引用数据类型时,它是比较的对象的内存地址,
如果两个对象是一模一样的,但是地址不同,它也会返回false
<script>
/*
基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object
JS中的变量都是保存到栈内存中
基本数据类型的值直接在栈内存中存储,
值与值之间时独立存在,修改一个变量不会影响其他变量
对象(引用数据类型)是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间
而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,
当一个通过一个变量修改属性时,另一个也会受到影响
*/
var a=123;
var b=a;
a++;
// console.log('a='+a);
// console.log('b='+b);
var obj=new Object();
obj.name='喜羊羊';
var obj2=obj;
//修改obj的name属性
obj.name='懒羊羊';
// console.log(obj.name);
// console.log(obj2.name);
//设置obj2为null
obj2=null;
// console.log(obj);
// console.log(obj2);
var c=10;
var d=10;
// console.log(c==d);
var obj3=new Object();
var obj4=new Object();
obj3.name='沸羊羊';
obj4.name='沸羊羊';
console.log(obj3);
console.log(obj4);
/*
当比较两个基本数据类型的值时,就是比较值
而当比较两个引用数据类型时,它是比较的对象的内存地址,
如果两个对象是一模一样的,但是地址不同,它也会返回false
*/
console.log(obj3==obj4);
</script>
二、对象字面量
1.使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:
{属性名:属性值,属性名:属性值,。。。,属性名:属性值}
对象字面量的属性名可以加引号也可以不加,建议不加
如果要使用一些特殊的名字,则必须加引号
属性名和属性值是一组一组的名值对结构,
名和值之间使用:连接,多个名值对之间使用","隔开
如果一个属性之后没有其他属性了,就不要写","
<script>
/*
创建一个对象
*/
var obj=new Object();
// console.log(obj);
/*
使用对象字面量来创建一个对象
*/
var obj={};
// console.log(obj);
// console.log(typeof obj);
obj.name='海绵宝宝';
obj.gender='男';
obj.age=6;
// console.log(obj.name);
// console.log(obj.gender);
// console.log(obj.age);
/*
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:
{属性名:属性值,属性名:属性值,。。。,属性名:属性值}
对象字面量的属性名可以加引号也可以不加,建议不加
如果要使用一些特殊的名字,则必须加引号
属性名和属性值是一组一组的名值对结构,
名和值之间使用:连接,多个名值对之间使用","隔开
如果一个属性之后没有其他属性了,就不要写","
*/
var obj2={
name:'派大星',
age:6,
gender:'男',
test:{name:'珊迪'}
};
// console.log(obj2);
console.log(obj2.test);
</script>