var obj = { x : 1, y : function () { return this.x + this.x; } }
var obj = {}; obj.x = 1; obj.y = function () { return this.x + this.x; }
Object.defineProperty(object, propertyname, descriptor);
参数说明如下:var obj = {}; Object.defineProperty(obj, "x", { value : 1, writable : true, enumerable : true, configurable : true }); console.log(obj.x); //1
object.defineProperties(object, descriptors);
参数说明如下:var obj = {}; Object.defineProperties(obj, { x : { //定义属性x value : 1, writable : true, //可写 }, y : { //定义属性y set : function (x) { //设置访问器属性 this.x = x; //改写obj对象的x属性的值 }, get : function () { //设置访问器 return this.x; }, } }); obj.y = 10; console.log(obj.x); //10
var obj = { //定义对象 x : 1 } console.log(obj.x); //访问对象属性x,返回1 obj.x = 2; //重写属性值 console.log(obj.x); //访问对象属性x,返回2
console.log(obj["x"]); //2 obj["x"] = 3; //重写属性值 console.log(obj["x"]); //3
for (var i in obj) { console.log(obj[i]); obj[i] = obj[i] + obj[i]; console.log(obj[i]); }在上面代码中,中括号中的表达式 i 是一个变量,其返回值为 for/in 遍历对象时枚举的每个属性名。
Object.getOwnPropertyNames(object);
参数 object 表示一个对象,返回值为一个数组,其中包含所有私有属性的名称。其中包括可枚举的和不可枚举的属性和方法的名称。如果仅返回可枚举的属性和方法的名称,应该使用 Object.keys() 函数。var obj = {x : 1, y : 2, z : 3}; var arr = Object.getOwnPropertyNames(obj); console.log(arr); //返回属性名:x,yz
Object.keys(object);
参数 object 表示指定的对象,可以是 JavaScript 对象或 DOM 对象。返回值是一个数组,其中包含对象的可枚举属性名称。Object.getOwnPropertyDescriptor(object, propertyname);
参数 object 表示指定的对象,propertyname 表示属性的名称。返回值为属性的描述符对象。var obj = {x : 1, y : 2, z : 3}; //定义对象 var des = Object.getOwnPropertyDescriptor(obj, "x"); //获取属性x的数据属性描述符 for (var prop in des) { //遍历属性描述符对象 console.log(prop + ':' + des[prop]); //显示特性值 } des.writable = false; //重写特性,不允许修改属性 des.value = 100; //重写属性值 Object.defineProperty(obj, "x", des); //使用修改后的数据属性描述符覆盖属性x var des = Object.getOwnPropertyDescriptor(obj, "x"); //重新获取属性x的数据属性描述符 for (var prop in des) { //遍历属性描述符对象 console.log(prop + ':' + des[prop]); //显示特性值 }一旦为未命名的属性赋值后,对象就会自动定义该属性的名称,在任何时候和位置为该属性赋值,都不需要定义属性,而只会重新设置它的值。如果读取未定义的属性,则返回值都是 undefined。
var obj = {x : 1}; //定义对象 delete obj.x; //删除对象的属性x console.log(obj.x); //返回undefined当删除对象属性之后,不是将该属性值设置为 undefined,而是从对象中彻底清除属性。如果使用 for/in 语句枚举对象属性,只能枚举属性值为 undefined 的属性,但不会枚举已删除属性。
var obj = {}; obj.f = function (n) { //定义对象的方法 return 10 * n; } var n = obj.f(5); //调用方法,设置参数为5 console.log(n); //返回值50
var obj = { //定义对象 f : function () { //定义对象的方法 console.log(this); //访问当前对象 } } obj.f(); //此时this指向对象obj var f1 = obj.f; //引用对象obj的方法f f1(); //此时this指向对象window
本文链接:http://task.lmcjl.com/news/12699.html