js中关于对象的那些事
程序员文章站
2022-05-04 19:45:45
...
对象的使用
<1> 对象的是定义
一: 字面量
var obj={}
二: 构造函数定义
var obj=new Object({})
<2> 对象的使用 :
(1) 点语法使用 => obj.key
(2) 中括号使用 => obj['key']
var obj={
a:1,
b:'1',
c: true,
d:function(){
},
e:[1,2,3],
f:{
h:1
}
}
//获取值 查(里面的值)
obj.a === obj['a']
obj.f.h === obj['f']['h']
//增 新增一个不存在的键
obj.key='2' === obj['key']='2'
//删 delete obj['key']或者 delete obj.key
delete obj.a === delete obj['a']
//该 obj['key']=新值 或者 obj.key=新值
obj.b=新值 === obj['b']=新值
<3>特性: 引用类型(赋值时不会复制内容而是把内存地址赋值给变量,一处更改,所有使用的地方都会改变)
var a={ test:1}
var b=a
b.test=2
console.log(a.test) //2
<4>高级用法
(1)遍历 for in || for of(对对象结构特性有要求)
(1)obj.hasOwnProperty(key) //判断key是不是obj自己的属性,非原型上的属性
for (const key in object) { //没有兼容性问题
if (object.hasOwnProperty(key)) {
const element = object[key];
}
}
for (const iterator of object) { //普通对象不可用,对象必须具有迭代特性,类似于数组 ,该方法一般只用作对数组的遍历
}
//el:
var obj = {
a: 1,
b: '1',
c: true,
d: function () {
},
e: [1, 2, 3],
f: {
a: 1
}
}
for (const key in obj) { //默认 for in会把对象本身属性和方法包括原型对象上属性和方法的都遍历出来
if (obj.hasOwnProperty(key)) { //只打印对象本身属性,不打印原型上的属性
console.log('key',key,'val',obj[key])
}
}
// key a val 1
// key b val 1
// key c val true
// key d val ƒ (){
// }
// key e val (3) [1, 2, 3]
// key f val {a: 1}
const obj = { length: 3, 0: 'foo', 1: 'bar', 2: 'baz' };
const array = Array.from(obj);
for (const value of array) {
console.log(value);
}
//foo
//bar
//baz
(2)
JSON.stringify(obj) //把对象转化成json字符串
JSON.parse(obj的json字符串) //把json格式字符串还原回对象
var obj2={
a:1,
b:{
c:2
}
}
var strObj=JSON.stringify(obj2)
console.log(strObj);
// {"a":1,"b":{"c":2}}
var obj=JSON.parse(strObj)
console.log(obj);
//{
// a:1,
// b:{
// c:2
// }
//}
拓展:对象深度克隆方法
var cloneObj=JSON.psrse(JSON.stringify(要克隆的对象))
(3) es6
var newObj=Object.assign({},obj1,obj2,...) //对象的合并 浅克隆
合并原则: 从右至左,相同的键,发生值覆盖,不同的键,发生值添加,最后把合并好的结果return回去
var obj={
a:1,
b:{
c:2
}
}
var obj2={
a:2,
e:33
}
var newObj=Object.assign({},obj,obj2)
console.log(newObj);
// {a: 2, b: {…}, e: 33}
(4)
Object.keys(obj) //把obj中所有的键提取出来放到一个数组中
Object.keys(obj2)
//(2) ["a", "e"]
Object.values(obj) //把obj中所有的键对应的值提取出来放到一个数组中
Object.values(obj2)
//(2) [2, 33]
Object.entries(obj) //把obj中所有的键值对的提取成一个数组再放到一个数组中,
Object.entries(obj)
// [ ["a", 2], ["e", 33] ]
上一篇: 安卓自定义View之带动画的饼状图
下一篇: 读取JAR包中的文件