JavaScript — 对象和属性的特性1
![preview](https://dl-preview.csdnimg.cn/86364456/0001-686a05409fbf9b009390c07515d5dd77_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
在JavaScript中,对象是语言的核心组成部分,它们由一组属性组成,每个属性都有其特定的特性。本文将深入探讨JavaScript对象和属性的特性,包括`[[Prototype]]`、`[[Class]]`、`get`和`set`访问器、以及如何通过`Object.getOwnPropertyDescriptor()`、`Object.create()`和`Object.prototype.toString.call()`等方法来操作和查询这些特性。 首先,让我们来看一下`[[Prototype]]`。在JavaScript中,每个对象都有一个内部链接到另一个对象的`[[Prototype]]`,这通常通过`__proto__`或`Object.getPrototypeOf()`来访问。这个链接形成了原型链,使得对象可以从其原型继承属性和方法。例如,通过`new Foo()`创建的对象,其`[[Prototype]]`通常指向`Foo.prototype`。 `[[Class]]`是另一个内部特性,虽然不能直接访问,但可以使用`Object.prototype.toString.call()`方法间接获取。它显示了对象的基本类型,如"Object"、"Array"等,虽然在现代JavaScript中,`instanceof`和`Symbol.toStringTag`通常更适合用于检测对象类型。 接下来,我们讨论属性的特性。在JavaScript中,每个属性有四个基本特性:`writable`、`enumerable`、`configurable`和`value`。例如,`name`属性可能具有以下配置: ```javascript { writable: true, // 是否可以更改属性值,对于方法通常是true,普通值通常是false enumerable: false, // 是否能在for...in循环中出现,如name/arguments通常为false configurable: false, // 是否能删除或修改属性的特性,Object.prototype属性通常为false value: function(){} // 属性值 } ``` 此外,还可以通过`get`和`set`定义访问器属性,比如: ```javascript { get name() {}, set name(value) {} } ``` 这些访问器允许我们在读取或设置属性时执行自定义逻辑。 内置对象的属性通常具有特定的特性,如`writable`为`false`,`enumerable`为`false`,`configurable`为`false`。例如,`toString`方法是不可写和不可枚举的,但可配置。 为了自定义对象属性的特性,可以使用`Object.defineProperty()`方法。它允许我们精确地控制属性的行为,如改变其是否可写、可枚举或可配置。 最后,`Object.isExtensible()`方法用于检查一个对象是否可以添加新的属性。默认情况下,新创建的对象是可扩展的,即`Object.isExtensible(obj)`返回`true`。但可以通过`Object.preventExtensions()`使对象不再接受新的属性。 总结来说,JavaScript中的对象和属性特性涉及原型链、内部特性、属性描述符和访问器等多个方面,理解并熟练运用这些概念是成为一名优秀的JavaScript开发者的关键。通过掌握这些知识,我们可以更好地控制对象的行为,实现更复杂的数据结构和功能。
![](https://csdnimg.cn/release/download_crawler_static/86364456/bg1.jpg)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![xmind](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![js](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![vsix](https://img-home.csdnimg.cn/images/20210720083646.png)
![avatar](https://profile-avatar.csdnimg.cn/421d381b592c4552b36cc4aad2424023_weixin_35766308.jpg!1)
- 粉丝: 26
- 资源: 320
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论0