js 对象

对象

1、简介

  • 创建对象,key有两种展示方式:key为变量、key为字符
    var a=3;
    var obj={
    [a]:10, // 创建对象时,如果key是一个变量,就需要写在 [ ] 里
    a:20 // 这个a是一个字符Key
    };
  • 描述对象下的属性
    console.log(obj); // {3: 10, a: 20} key为变量时,创建时与创建完是不一样的
    console.log(obj[a],obj[3]); // 10 10 变量key的描述方式
    console.log(obj[“a”],obj.a); // 20 20 字符串key的描述方式
  • 直接描述对象下有一个a的属性,值是1
    obj.a=1;
    obj[“a”]=1; // 对象[字符key]=value;
    key就是属性名称,必须是字符串(ES5),不是字符串的会隐式转化为字符串
    var a=“a”;
    obj[a]=1;//中括号的方式是可以带入变量作为key的,obj. 点 方法是不能使用变量;key是字符串时,必须加 " "
  • object对象,属性名表示方式:
    变量key—obj[a] (一种,除了使用变量名作为可以表示出来的属性名,但是可以使用变量的值为属性名,反正对象obj中真正存在的是变量的值,只不过他的值转化为了字符串);
    字符key—obj[“a”] 或 obj.a (两种)

2、示例:
(1)变量作为key,创建对象属性及赋值
obj={a:1};
var b=10; //b的值会成为对象key
obj[b]=2;
console.log(obj[b]);//2
console.log(obj);//{10: 2, a: 1}

(2)不给c赋值,则默认undefined
obj={a:1};
var c;
obj[c]=2;
console.log(obj[c]);//2
console.log(obj);//{a: 1, undefined: 2}

(3)直接以obj[ ]的方式写入属性key,则中括号的内容就是变量key
obj={a:1};
obj[10]=2;
console.log(obj[10]);//2
console.log(obj);//{10: 2, a: 1}

(4)描述字符串key的两种方式
obj1={e:2,u:8};
console.log(obj1[“e”],obj1.u); //2 8

(5)对象的遍历 for in 循环
for(var prop in obj1){
console.log(prop,obj1[prop]);//属性名 属性值
}

(6) 属性名是数字排靠前,按数值大小排列;字母靠后,按写的顺序排列

var y = "z";
obj1[y]=60;//在 obj1["r"] 前面
var m ;
obj1[m]=80;
var gg = true;
obj1[gg]=1;
console.log(obj1[gg]);
console.log(obj1[true]);
var ll = {qq:11};
obj1[ll]=33;
obj1[2]=0; //添加到最前面
obj1["4"]=40; //添加到 obj1[2]=0; 的后面
obj1["r"]=98; //添加到最后面
obj1.hh=50;
for(var prop in obj1){
    console.log(prop,obj1[prop]);//属性名  属性值
// prop代表obj1下的所有属性名key(包括变量key、字符key),每循环一次就给prop赋值一次属性名
}
结果
2
2 0
4 40
e 2
u 8
z 60
undefined 80
true 1
[object Object] 33
r 98
hh 50

3、对象嵌套
var obj2 = {a:1,b:{c:9,d:8}};
console.log(obj2.b);
console.log(obj2[“b”][“c”]);//obj2下的b下的c的值

4、浅复制,复制地址
var obj={a:1,b:2,c:{d:3,e:4}};
var obj3={}
for(var prop in obj){
obj3[prop]=obj[prop];
}
obj.a=10;///obj发生变化, 复制后切段引用关系,所以源对象属性值改变,新对象不变
obj.c.d=11;//obj、obj1都发生改变,因为复制的是c对象引用地址
console.log(obj); // {a: 10, b: 2, c: {d: 11, e: 4}}
console.log(obj3); // {a: 1, b: 2, c: {d: 11, e: 4}}

5、删除某个属性,用delete
delete obj.b;
console.log(obj);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值