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)

效果图如下:

相关推荐
一勺菠萝丶2 分钟前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
军军君012 分钟前
Three.js基础功能学习十四:智能黑板实现实例一
前端·javascript·css·typescript·前端框架·threejs·智能黑板
小村儿4 分钟前
连载05-Claude Skill 不是抄模板:真正管用的 Skill,都是从实战里提炼出来的
前端·后端·ai编程
xiaotao13110 分钟前
JS new 操作符完整执行过程
开发语言·前端·javascript·原型模式
robch17 分钟前
python3 -m http.server 8001直接启动web服务类似 nginx
前端·nginx·http
吴声子夜歌23 分钟前
ES6——数组的扩展详解
前端·javascript·es6
guhy fighting32 分钟前
new Map,Array.from,Object.entries的作用以及使用方法
开发语言·前端·javascript
大漠_w3cpluscom32 分钟前
CSS 技巧:CSS 单位使用指南
前端
STATICHIT静砸44 分钟前
了解Monorepo结构
前端