Object对象(对象的分类、属性(属性名和属性值)、基本数据
类型与引⽤数据类型区别)
js的基本数据类型Object——引⽤数据类型
基本数据类型的不⾜之处:基本数据类型是单⼀的值,不能表现出值与值之间的所属关系
object分为内建对象、宿主对象和⾃定义对象
a 内建对象:ES标准中定义的对象,在任何ES的实现中都可以使⽤;例如:Math  String等。
b 宿主对象:由JS运⾏的浏览器提供的对象,⽬前主要是指浏览器提供的对象;例如:BOM DOM.
c⾃定义对象:由开发⼈员⾃⼰创建的对象。
属性名和属性值
例如,先创建⼀个新的对象 var obj = newObject(); 向新创建的对象中添加属性 obj.name =“陈飘”;
此时这⾥的name为属性名 “陈飘”为属性值
注意:
a 属性名不强制遵守标识符规范,但是尽量遵守标识符的规范,如果使⽤了特殊的属性名,则不可以使⽤ object.属性名=属性值的⽅式添加对象属性,需要使⽤ object["属性名“]=属性值,同时在取读时也需要使⽤该⽅式。
b属性值可以是任意数据类型,甚⾄可以是⼀个对象。
c in运算符:通过这个运算符可以检查⼀个对象是否含有指定的属性,如果有则返回true,否则返回false。
语法: ”属性名“in obj
例如:console.log("test" in obj);
关于属性的总结:
添加属性:obj.属性名=属性值;
取读属性:obj.属性名例如:console.der); 注意:如果没有该属性会返回undefined并不会报错。
修改属性:obj.属性名=新的属性值;
删除属性:delete obj.属性名
基本数据类型和引⽤数据类型的区别:
基本数据类型:String  Boolean  Number Undfined  Null
引⽤数据类型:Object
区别:
基本数据类型:js的变量保存在栈内存中,变量的值也是直接保存在栈内存中;值与值之间是彼此独⽴的,⼀个值的修改仅仅影响⾃⾝。  var a =12; var  b = a;  a++;
以上输出 a = 13  b=12  两者是互不影响的
变量在栈内存中保存显⽰变量名+值
引⽤数据类型:创建⼀个对象时会在堆内存中开辟⼀个空间,⽤来存放对象的属性。在为对象添加属性时,是将属性放在堆内存中开辟的空间⾥。
在栈内存中保存显⽰对象名 +⼀个地址(类似于指针,指向堆内存中该对象开辟的空间)
var obj = New object();  obj.name="陈飘";    var obj2 = obj; obj2.name =“阿飘”;
此时name=阿飘。值已经被修改,因为两个对象指向同⼀个地址
注意当obj2.name= Null;时  name= 陈飘切断了该对象和地址的联系。