y294945022 发表于 2024-3-15 17:55

js 编程:用for循环,把旧对象全给新对象,不用展开运算符(...)

//
用for循环,不利用 展开运算符(...),把旧对象全赋值给新对象,也算是两个对象合并。
// 可是无法解决 覆盖的问题

let obj={a:1,b:'学',c:() => console.log('不要急噪呦!')}
let jj={}









//不利用 展开运算符(...)给新对象赋值,想用for循环,
// 可是无法解决 覆盖的问题

let obj={a:1,b:'学',c:() => console.log('不要急噪呦!')}
let jj={}


xymoc 发表于 2024-3-15 18:04

本帖最后由 xymoc 于 2024-3-15 18:08 编辑

试试下面的代码吧,不理解你说的覆盖是什么意思

let obj={a:1,b:'学',c:() => console.log('不要急噪呦!')}
let jj={}
for (const key in obj) {
    jj = obj
}
console.log(jj)

爱飞的猫 发表于 2024-3-15 18:31

Object.assign(jj, obj)

不需要 for 循环也可以。

使用 for 循环还需要考虑一些特殊名词不能覆盖,例如 `prototype`/`__proto__`。使用自带的方法就不需要担心这个问题了。

y294945022 发表于 2024-3-15 19:47

xymoc 发表于 2024-3-15 18:04
试试下面的代码吧,不理解你说的覆盖是什么意思

let obj={a:1,b:'学',c:( ...


确实解决了。

可为什么呢?
我理解的用 for in
应该是属性、值 单独一个一个的给加上去。就像:jj ={key + ‘ :‘ +obj}前者是属性,后面是值。

你写的这样,jj = obj
应该是只把值 给过去了呀,   为何是一套都甩过去了 ???

y294945022 发表于 2024-3-15 19:49

爱飞的猫 发表于 2024-3-15 18:31
不需要 for 循环也可以。

...

你说的很对,什么时候我确实不需要用它时,会想起你的提醒的。

kittylang 发表于 2024-3-15 20:59

let dog = { name: "Spot", breed: "Dalmatian" };

// 访问属性 name

dog.name

// 修改属性 name

dog.name = "joy"

// 访问,赋值也可以像下面这样

dog["name"]

// 字符串字面量的name可以换成变量

let key = "name"

dog

这边建议你简单的学习一下js的语法

myforaward 发表于 2024-3-18 17:36

y294945022 发表于 2024-3-15 19:47

确实解决了。



赋值语句就是给某个变量赋值。比如 a=1 是给变量a复制。
如果是对象赋值, a=value; 这时候就等于把key创建出来,然后赋值value。
页: [1]
查看完整版本: js 编程:用for循环,把旧对象全给新对象,不用展开运算符(...)