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)

效果图如下:

相关推荐
李剑一19 分钟前
前端转AI要了解的技术,其他人不用看。前端架构基础之:让Js的计算运行在GPU上
前端·aigc·ai编程
IT_陈寒20 分钟前
Python的列表拷贝坑得我原地打转
前端·人工智能·后端
恋猫de小郭26 分钟前
Dart 3.13 的到底改了什么?为什么很重要?有什么坑?
android·前端·flutter
这是个栗子31 分钟前
前端开发中的常用工具函数(十):JavaScript 数组遍历
javascript·map·遍历·filter·foreach·for·for...of
FYKJ_201039 分钟前
django学习成绩预警系统10905
java·javascript·spring boot·python·spark·django·php
云浪41 分钟前
给大模型装上"手":三分钟看懂 AI Agent 的 Tool 工具调用
javascript·人工智能·node.js
风月说与山鬼41 分钟前
六、React事件
前端·javascript·react.js
岁岁种桃花儿43 分钟前
Vue核心语法第十四篇:列表过滤
前端·javascript·vue.js
晓得迷路了43 分钟前
栗子前端技术周刊第 143 期 - npm 攻击事件、Bun 1.4...
前端·javascript
YHHLAI43 分钟前
实战 Vibe Coding:用 AI 从零搭一个 React 待办清单
前端·人工智能·react.js