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)

效果图如下:

相关推荐
Alice-YUE27 分钟前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
是上好佳佳佳呀2 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
莎士比亚的文学花园2 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
CDN3602 小时前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库
之歆3 小时前
Day07_CSS盒子模型 · 样式继承 · 用户代理样式
前端·css
01漫游者3 小时前
JavaScript函数与对象增强知识
开发语言·javascript·ecmascript
DanCheOo3 小时前
AI 应用的安全架构:Prompt 注入、数据泄露、权限边界
前端·人工智能·prompt·安全架构
We་ct4 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
weixin_427771614 小时前
前端调试隐藏元素
前端
threelab4 小时前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能