对象笔试题

1.

const animals = {};
let dog = { emoji: '🐶' }
let cat = { emoji: '🐈' }

animals[dog] = { ...dog, name: "Mara" }
animals[cat] = { ...cat, name: "Sara" }

console.log(animals[dog])

答案:{emoji: "🐈", name: "Sara"}

因为属性名如果是非字符串的变量会通过tostring进行转换,dog和cat转换完都是一样的key ‘[object Object]’,

所以猫的会覆盖狗的

2.

const user = {
 email: "e@mail.com",
 password: "12345"
}

const updateUser = ({ email, password }) => {
 if (email) {
  Object.assign(user, { email })
 }

 if (password) {
  user.password = password
 }

 return user
}

const updatedUser = updateUser({ email: "new@email.com" })

console.log(updatedUser === user)

答案: true 一直都在操作堆中的同一块空间

全部评论
以上题目如果不会,建议同学详细了解一下this相关知识,如有需要可报一下牛客前端集训营的课程,连接:https://www.nowcoder.com/courses/cover/live/662
点赞 回复 分享
发布于 2021-07-01 10:29

相关推荐

SadnessAlex:跟三十五岁原则一样,人太多给这些***惯坏了
点赞 评论 收藏
分享
谁知道呢_:你好,我是炮灰n+1号
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务