JavaScript的object的使用和监控打印日志

一、准备一个"普通对象"

复制代码
const user = {
  name: '张三',
  age: 18,
  city: '北京'
}

二、例子 1️⃣:Object.keys() ------ 获取所有键名

复制代码
const keys = Object.keys(user)
console.log(keys)

输出:

复制代码
["name", "age", "city"]

👉 用途:

  • 遍历对象

  • 动态处理字段(你之前的 watch 就在用这个)


三、例子 2️⃣:Object.values() ------ 获取所有值

复制代码
const values = Object.values(user)
console.log(values)

输出:

复制代码
["张三", 18, "北京"]

四、例子 3️⃣:Object.entries() ------ 键值对数组(很常用)

复制代码
const entries = Object.entries(user)
console.log(entries)

输出:

复制代码
[
  ["name", "张三"],
  ["age", 18],
  ["city", "北京"]
]

👉 非常适合 forEach / map


五、例子 4️⃣:遍历对象(你现在正在用的模式)

复制代码
Object.keys(user).forEach(key => {
  console.log('字段名:', key)
  console.log('字段值:', user[key])
})

输出:

复制代码
字段名: name
字段值: 张三
字段名: age
字段值: 18
字段名: city
字段值: 北京

六、例子 5️⃣:Object.assign() ------ 合并对象

复制代码
const extraInfo = {
  job: '程序员',
  age: 20
}

const newUser = Object.assign({}, user, extraInfo)

console.log(newUser)

输出:

复制代码
{
  name: '张三',
  age: 20,
  city: '北京',
  job: '程序员'
}

📌 后面的会覆盖前面的同名字段


七、例子 6️⃣:Object.defineProperty()(进阶,和你现在学的有关)

复制代码
const obj = {
  price: 100
}

Object.defineProperty(obj, 'price', {
  set(val) {
    console.log('价格被修改为:', val)
  },
  get() {
    return 100
  }
})

obj.price = 200   // 👉 自动触发 set

输出:

复制代码
价格被修改为: 200

👉 这正是你 setWatcher 的底层原理


八、例子 7️⃣:判断对象里有没有某个属性

复制代码
console.log(user.hasOwnProperty('name'))   // true
console.log(user.hasOwnProperty('phone'))  // false

九、一个和你"监听器"高度相关的小例子 ⭐

复制代码
const watch = {
  total: (val) => console.log('total 变了', val),
  count: (val) => console.log('count 变了', val)
}

Object.keys(watch).forEach(key => {
  console.log('正在处理字段:', key)
})

输出:

复制代码
正在处理字段: total
正在处理字段: count

JavaScript代码如下:

复制代码
const user = {
    name: '张三',
    age: 18,
    city: '北京'
}
const keys = Object.keys(user)
console.log("user",user['name'])

const values = Object.values(user)
console.log(values)

const entries = Object.entries(user)
console.log("entries",entries)

Object.keys(user).forEach(key => {
    console.log('字段名:', key)
    console.log('字段值:', user[key])
})

const extraInfo = {
    job: '程序员',
    age: 20
}

const newUser = Object.assign({}, user, extraInfo)
console.log("newUser",newUser)

const obj = {
    price: 100
}



Object.defineProperty(obj, 'price', {
    set(val) {
        console.log('价格被修改为:', val)
    },
    get() {
        return 100
    }
})
obj.price=213

console.log(user.hasOwnProperty('name'))   // true
console.log(user.hasOwnProperty('phone'))  // false

const watch = {
    total: (val) => console.log('total 变了', val),
    count: (val) => console.log('count 变了', val)
}

Object.keys(watch).forEach(key => {
    console.log('正在处理字段:', key)
})

watch.total(121)
watch.total(12)

效果图如下:

相关推荐
31535669133 分钟前
Superpowers:GPT-5.6 时代下的流程毒瘤
前端·后端
清秋40 分钟前
全网最全 ECMAScript 攻略( 更新至 ES2026)
前端·javascript·编程语言
Cao_Ron1 小时前
用 SVG image symbol 画 ECharts graph 圆形节点
前端
hxy06011 小时前
React-Call让你的React组件像异步函数一样调用
前端·react.js
Hilaku1 小时前
为什么 AI 写前端时,总是优先选择 React,而不是 Vue?
前端·javascript·程序员
京东云开发者1 小时前
GPT-5.6、ChatGPT Work 与 Codex 更新食用指南
前端
Cao_Ron1 小时前
用 ECharts graph 画出卡片式矩形节点
前端
skiyee1 小时前
换个底座的 Wot Starter 居然让 AI 更懂项目!
前端·ai编程
anyup2 小时前
这一套绝了!AI 大模型写故事,星云 SDK 驱动 3D 数字人实时演绎
前端·人工智能·aigc
耀耀切克闹灬2 小时前
短链跳转
前端