JavaScript中的对象
本帖最后由 pidtfork 于 2020-10-28 18:57 编辑JavaScript对象• 对象时JavaScript的基本数据类型。对象时一个复合值:它将很多值聚合在一起,可通过名字访问这些值。
• 对象可以看做事属性的无序集合,每个属性都是一个名/值对。
• 属性名是包括字符串在内的任意字符串,属性值可以是除undefined值之外的任何值,因此我们可以吧对象看成时从字符串到值的映射。
• 对象时动态的可以新增属性也可以删除属性
• 除了 数字,true、false、null、undefined其他都所有值都是对象
• 对象时无类别的,它对新属性的名字和值没有约束,对象可以包含其他对象。
• 对象的引用
JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。对象是拥有属性、方法的数据。
创建对象
字面量直接创建对象和通过new 关键字创建对象;
var device ={}; //没有属性的对象
varpoint = { x: 100, y: 200 };//两个属性
varpoint2 = { //属性的值是另一对象的值和表达式运算的结果
x: point.x + 20, //120
y: point.y / 10 //20
};
varmatrix = {
logo: "UBAINS", //属性值可以是除undefined值之外的任何值,
"model": "AIO-1608", //虽然属性名是字符串,在创建和通过.形式取值时,不用双引号
"": null, //属性名是包括字符串在内的任意字符串
size: { //属性值可以是另一个对象,对象可以包含其他对象。
length: 600,
width: 400,
height: 100,
},
switch: function () { //属性值可以是函数对象,这时也称switch为matrix对象的方法
console.log("switch");
return "hello"
}
}
matrix.type = "matrix"; //动态的新增属性和值
deletematrix.type ; //动态的删除属性和值
matrix["sn"] = 202006042341; //动态的新增属性和值
matrix.model = "AIO-3208"; //动态的修改属性值
varo = new Object(); //创建一个空对象,和{}一样
vara = new Array();//创建一个空数组,和[]一样
vard = new Date();//创建一个表示当前时间的Date对象
对象属性操作
通过[]方法获取对象值的用处,如下 getModel 中返回的config对象的值是跟传入参数有关的,所以必须使用 [] 方法来去对象的值,如果使用 . 方法也就是 config.name 会一直返回“error”字符,
如果 config 对象没有 name 这个属性就一直返回 undefined,总之取对象值时,属性名为变量时必须使用 [] 写法var logo =matrix.logo; //通过 . 方式获取属性值
varmodel = matrixa["model"]; // 也可以通过[]写法获取属性值
//获取对象属性的三种方式
varobj = {
name:"ubains"
}
varkey = "name";
obj.name ==obj["name"] == obj //等价
function getModel(name){
varconfig = {
"control":"EC-8000",
"matrix":"HMX-1600",
"audio":"SEKAKU",
"name":"error"
}
returnconfig;
}
getModel("control"); //"EC-8000"
getModel("matrix"); //"HMX-1600"
getModel("audio"); //"SEKAKU"
通过 delete 方法随时删除对象属性,属性删了值自然也是删除了。也可以随时添加属性。
可以通过 in 运算符检查对象是否包含某个属性
"logo" inmatrix//true
"hello" in matrix//false
if("logo" in matrix) {
//存在时怎么操作
}
for...in语句以任意顺序遍历一个对象的属性。
var obj ={a:1, b:2, c:3};
for(varkey in obj) {
console.log("obj." +key + " = " + obj);
}
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
序列号对象
JavaScript提供了两个方法来将JavaScript对象转为json字符串和将json字符串转为JavaScript对象
对象里面有属性值为函数的时候,序列化的时候去丢弃属性和值。
JSON.stringify(); //将一个对象转成json字符串
JSON.parse(); //将一个json字符串转成对象
varobj = {a:1, b:2, c:3};
JSON.stringify(obj);//{"a":1,"b":2,"c":3}
varobj = JSON.parse('{"a":1,"b":2,"c":3}');
JSON.stringify(obj,null," "); //转成的json字符串带空格换行如下
{
"a": 1,
"b": 2,
"c": 3
}
对象的引用
虽然我们定义的xy变量等于obj对象,但是这其实是对象的引用,并没有让xy单独指向一个obj的副本。要复制对象就要使用对象的拷贝。
小提示:不要两边都是对象做等于等于运算,可以用JSON.stringify()转成字符串来比较两个对象是否相等。或者遍历对象通过比较属性和值。
var obj ={
"a": 100
}
vary =obj;
varx =y;
x.a = 99;
console.log(obj);//{a: 99 }
y.a = 98;
console.log(obj); //{ a: 98 }
console.log(x==y); //true
console.log([]==[]); //false
对象拷贝
//方法1是通过遍历的方式给新的对象赋值;
varobj = {a:1, b:2, c:3};
varx ={};
for(varkey in obj) {
x =obj;
}
//方法2 通过JSON.stringify
varobj = {a:1, b:2, c:3};
vars = JSON.stringify(obj);
varx = JSON.parse(s);
页:
[1]