参考链接:https://msdn.microsoft.com/zh-cn/library/dd548687Object.defineProperty(object, propertyname, descriptor)object
Object.defineProperty(object, propertyname, descriptor)
object
必需。 要在其上添加或修改属性的对象。 这可能是一个本机 JavaScript 对象(即用户定义的对象或内置对象)或 DOM 对象。
propertyname
必需。 一个包含属性名称的字符串。
descriptor
必需。 属性描述符。 它可以针对数据属性或访问器属性。
添加数据属性
修改数据属性
添加访问器属性
修改访问器属性
修改数据属性
<!DOCTYPE html> <lang ="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> //https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete var newLine = "<br />"; // Create a user-defined object. // Add a data property to the object. //Object.defineProperty(object, propertyname, descriptor) var obj = {}; var obj = {a:1,b:2,c:3}; for (var prop in obj) { console.log("obj."+prop+"="+obj[prop]); } //obj.a=1 obj.b=2 obj.c=3 //在以下示例中,Object.defineProperty 函数向用户定义的对象添加数据属性。 若改为向现有的 DOM 对象添加属性,则取消对 var = window.document 行的注释。 //添加数据属性 Object.defineProperty(obj, "newDataProperty", { value: 101, writable: true, enumerable: true, configurable: true }); //修改数据属性 // Object.defineProperties(obj,"newDataProperty",{writeable:true}); Object.defineProperty(obj,"newAccessorProperty",{ set:function (x) { this.newage = x; }, get:function () { return this.newage; }, enumerable:true, configurable:true }); obj.newAccessorProperty = 40; document.write("property value :" +obj.newAccessorProperty+newLine); // Set the property value. obj.newDataProperty = 102; document.write("Property value: " + obj.newDataProperty + newLine); Object.defineProperty(obj, "newAccessorProperty", { get: function () { return this.newage; } }); //获取对象的属性的描述信息 var descriptor = Object.getOwnPropertyDescriptor(obj, "newAccessorProperty"); for (var prop in descriptor) { document.write(prop + ': ' + descriptor[prop]); document.write(newLine); } /** 对象的属性的描述信息 get: function () { return this.newage; } set: function (x) { this.newage = x; } enumerable: true configurable: true */ var person = { name : "chenfang", age:23, sex:"female", job:"teacher" }; var names = Object.getOwnPropertyNames(person) for (var i =0 ;i<names.length ; i ++) { var prop = names[i]; document.write(prop + ":"+person[prop]); document.write(newLine); } // Output: // Property value: 102 </script> </head> <body> </body> </html>