|
在IDE中,我们时时刻刻需要用到的对象。
每个对象都支持挂接子成员例如:
声明对象
let 我是对象={}
或者在表格中声明
其中可以给 我是对象 挂接成员
- 我是对象.第一个成员=0
- 我是对象.aaa='我是文本'
- 我是对象.文字对象=文字创建()
复制代码
其中成员另外一种赋值方法:
这个方法的好处是可以使用传递变量来操作例如:
let 变量='aaa'
- 我是对象[<span style="background-color: rgb(255, 255, 255);">变量</span>]='修改内容'
复制代码
更多命令,请参考 数据Jsonxx 系列
可以将一串文本转到对象,对象到文本,以及检测是否为json子串。
高级应用
数组嵌套对象
//声明一个Json数组变量
let Json=[]
//声明一个JsonEx对象变量
let JsonEx={id:1,name:'55IDE'}
//将JsonEx加入到Json数组中
数组加入成员末尾(Json, JsonEx)
输出结果:
- Array(1)
- 0: {id: 1, name: '55IDE'}
- length: 1
对象嵌套对象
// 声明一个对象
let Json = {}
//在对象中插入子成员对象
Json = {JsonEx: {id: 1, name: '55IDE'}}
调试输出(Json)
- {JsonEx: {…}}
- JsonEx: {id: 1, name: '55IDE'}
或者使用:
let Json = {}
let JsonEx = {id: 1, name: '55IDE'}
Json.JsonEx = JsonEx
结果也是一样
代码案例
- // let Json = []
- // let JsonEx = {id: 1, name: '55IDE'}
- // 数组加入成员末尾(Json, JsonEx)
- //
- let Json = {}
- // let JsonEx = {id: 1, name: '55IDE'}
- // Json.JsonEx = JsonEx
- // 调试输出(Json)
- //
- Json = {JsonEx: {id: 1, name: '55IDE'}}
- 调试输出(Json)
复制代码
深拷贝和浅拷贝的区别- 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存。
- 深拷贝(deep copy):复制并创建一个一模一样的对象,不共享内存,修改新对象,旧对象保持不变。
- 浅拷贝只是拷贝一层,更深层次对象级别的只拷贝引用(地址),所以改变新对象,旧对象也会改变,因为新旧对象共享一块内存。
对象赋值
let a=1
let b=a
b=2
//调试输出结果
a=1 ,b=2
解析:因为他们只有一个自身变量值,所以赋值时候属于深拷贝,每个都是独立的,因为它就一层
let a={id:1,name:"55IDE"}
let b=a
b.id=3
//调试输出结果
a={id:3,name:"55IDE"},b={id:3,name:"55IDE"}
解析:因为b浅拷贝了a,b可以索引a的成员,但修改的时候指向内存是同一块,所以b与a是同一个,修改任意一个对象,两者同时改变
对象的深度拷贝案例(注:无法拷贝内部带有子程序的,如果需求请使用辅助插件中的拷贝)
- let a = {id: 1, name: "55IDE"}
- let b = 拷贝对象(a)
- b.id = 3
- 调试输出(a)
复制代码 {id: 1, name: '55IDE'}
//解析,b深度拷贝了a,修改b,a不会变。
高级用法: Json是传递过来的参数 Json_ 是当前声明的局部变量
- Json_.id = Json.id;
- Json_.lookface = Json.lookface;
- Json_.itemid = Json.itemid;
- Json_.num = Json.num;
- Json_.type = Json.type;
- Json_.effect = Json.effect;
- Json_.name = Json.name;
- // 扩展 Json_,保留上面的属性并继续赋值 Json 中的其他属性
- Json_ = { ...Json_, ...Json };
复制代码
|
|