JavaScript ES5 对象方法

admin2年前 (2023-07-08)it知识440

ECMAScript 5 (2009) 向 JavaScript 添加了许多新的对象方法。

管理对象

// 以现有对象为原型创建对象
Object.create()
//添加或更改对象属性
Object.defineProperty(object, property, descriptor)
//添加或更改对象属性
Object.defineProperties(object, descriptors)
//访问属性
Object.getOwnPropertyNames(object)
//以数组返回所有属性
Object.getOwnPropertyNames(object)
//访问原型
Object.getPrototypeOf(object)
//以数组返回可枚举属性
Object.keys(object)

保护对象


//防止向对象添加属性
Object.preventExtensions(object)
//如果属性可以添加到对象,则返回true
Object.isExtensible(object)
//防止更改对象属性(不是值)
Object.seal(object)
//如果对象被密封,则返回true
Object.freeze(object)
//如果对象被冻结,则返回true
Object.isFrozen(object)

更改属性值

const person = {
  firstName: "Bill",
  lastName: "Gates",
  language: "EN"
};
//修改属性
Object.defineProperty(person, "language", {value: "NO"});
Object.defineProperty(person, "language", {enumerable: false});  
Object.keys(person) //返回可枚举属性的数组 这时就少了language.

更改元数据

ES5允许更改一下属性元数据:

writable: true // 属性值可更改 or false 不更改 

enumerable: true //属性可枚举or false 不更改 

configurable: true //属性可重新配置 or false 不更改 

一个计数器实例:

//定义对象
const  obj = {counter:0};
//定义setter
Object.defineProperty(obj, "reset", {
get: function(){ this.counter = 0;  }
});
Object.defineProperty(obj, "increment", {
get: function(){ this.counter++;  }
});
Object.defineProperty(obj, "decrement", {
get: function(){ this.counter--;  }
});
Object.defineProperty(obj, "add", {
set: function(value){ this.counter += value;  }
});
Object.defineProperty(obj, "subtract", {
set: function(value){ this.counter -= i;  }
});
//操作计算器
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;


标签: JavaScript

相关文章

JavaScript 数组排序

sort() 方法以字母顺序进行排序var  fruits = ["banana", "orange",&qu...

JavaScript 数组迭代

数组迭代方法对每个数组项进行操作Array.foreach()方法为每个数组元素调用一次函数(回调函数)var txt = ""; var ...

JavaScript 对象访问器

javascript 对象访问器计数器例子var obj = {      counter:0,  &nb...

JavaScript 对象原型

前面有一章提到无法为已有的对象构造器添加新属性Person.nationality = "English";  //得到的是undefine...

JavaScript 可迭代对象

可迭代对象时可以使用for..of 进行迭代的对象从技术上讲,可迭代对象必须实现Symbol.iterator方法。遍历字符串你可以使用for..of循环来遍历字符串的元素:for(const&nbs...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。