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)

效果图如下:

相关推荐
跳动的梦想家h2 分钟前
环境配置 + AI 提效双管齐下
java·vue.js·spring
夏幻灵22 分钟前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星23 分钟前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_36 分钟前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝40 分钟前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions1 小时前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发1 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
程序员猫哥_1 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
龙飞051 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
我爱加班、、1 小时前
Websocket能携带token过去后端吗
前端·后端·websocket