JavaScript ES5 对象方法

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

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 数组方法

数组转换成字符串Javascript 方法 toString() 把数组转换为数组值(逗号分隔)的字符串。var fruits = ["banana"...

JavaScript 对象构造器

function Person(first, last, age) {       this.fi...

JavaScript 对象原型

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

electorn是什么

关于electron有以下信息:Electron 是一款可以使用 JavaScript、HTML 和 CSS 来构建跨平台桌面应用程序的开源框架,它可以让开发者使用 web 技术来创建原生应用程序。E...

JavaScript 最新特征

JavaScript 的最新特征包括以下几个方面:类的私有变量:通过使用 # 符号,可以在类中定义私有变量,只能在类的内部访问,外部无法访问。空位合并操作符:使用 ?? 符号,可以在两项中任一项为 n...

JavaScript Map

Map 保存键值对,其中键可以是任何数据类型。Map会记住键的原始插入顺序。Map提供表示映射大小的属性。如何创建Map 可以通过以下方式创建Javascript 映射:将数组传递给new...

发表评论

访客

看不清,换一张

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