Object.defineProperty(定义试添加json对象的属性)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Object.defineProperty</title> </head> <body> <script type="text/javascript"> let number = 18; let person = { name: "张三", sex: "男" } Object.defineProperty( person, // 指定添加属性的 json 对象 "age", // 指定添加属性的名称 { // 指定添加属性配置项 // value: 18, // 设置值,不能和 get、set 配置同时使用 // writable: true, // 控制属性是否可修改,默认 false,不能和 get、set 配置同时使用 enumerable: true, // 控制属性是否可枚举(遍历),默认 false configurable: true, // 控制属性是否可删除,默认 false get:function() { // 简写:get(){},当有人读取 person 对象的 age 属性时,get 函数(getter)就会被调用,且返回的值就是 age 的值 console.log("调用 getter 函数"); return number; }, set:function(value) { // 简写:set(value){},当有人修改 person 对象的 age 属性时,set 函数(setter)就会被调用,且会修改 age 的值 // 注意,如果 age 属性的 getter 函数读取的是其他变量,那么需要修改被读取的变量 console.log("调用 setter 函数"); number = value; } } ); console.log(person); </script> </body> </html>