my_JS_notes_Objects:关于JavaScript中的对象的注释
JavaScript中的对象是编程的核心概念,它是数据和函数的集合,为动态编程提供了强大的支持。在JavaScript中,一切皆为对象,包括基本类型如字符串、数字和布尔值,它们都有各自的包装对象。本笔记将深入探讨JavaScript对象的创建、属性、方法、原型、作用域以及闭包等相关知识点。 一、对象的创建 1. **字面量语法**:最直观的创建对象的方式,通过大括号 `{}` 创建,键值对之间用逗号分隔。 ```javascript let obj = { name: "John", age: 30, sayHello: function() { console.log("Hello"); } }; ``` 2. **构造函数**:通过`new`关键字调用构造函数来创建对象。 ```javascript function Person(name, age) { this.name = name; this.age = age; } let john = new Person("John", 30); ``` 3. **Object.create()**:创建一个新对象,并将其[[Prototype]]链接到指定的对象。 ```javascript let baseObj = { baseProperty: "base" }; let newObj = Object.create(baseObj); ``` 二、对象的属性与方法 1. **数据属性**:包含值的属性。有四个可配置的特性:`configurable`, `enumerable`, `writable`, `value`。 2. **访问器属性**:没有直接存储值,而是通过getter和setter访问的属性。 3. **对象的方法**:本质上是对象的属性,其值为函数。例如,上面`obj`对象的`sayHello`就是一个方法。 三、原型 JavaScript中的每个对象都有一个`__proto__`属性,指向它的原型。原型链是通过`__proto__`属性连接起来的一系列对象。对象可以通过`prototype`属性来定义其实例的原型。 四、原型链 1. **继承**:JavaScript的继承是基于原型链实现的。子对象可以访问父对象的属性和方法。 2. **hasOwnProperty()**:用于检查对象是否具有指定的自身属性,而非原型链上的属性。 3. **in运算符**:检查对象或其原型链上是否存在某个属性。 五、作用域 1. **全局作用域**:在函数外部声明的变量可以在整个程序中访问。 2. **局部作用域**:在函数内部声明的变量只在该函数内部可见。 3. **块级作用域**:ES6引入的`let`和`const`变量在它们所在的代码块内有效。 4. **函数作用域与闭包**:函数内部可以访问外部的变量,但如果函数返回了一个内部引用,就形成了闭包,使得外部可以访问到内部的变量。 六、动态性 JavaScript对象是动态的,可以在运行时添加、删除或修改属性和方法。这种灵活性使得JavaScript成为一种非常灵活的编程语言。 七、对象的深拷贝与浅拷贝 1. **浅拷贝**:创建一个新对象,然后复制源对象的引用。如果源对象包含引用类型,拷贝后的对象与原对象共享同一引用。 2. **深拷贝**:创建一个新对象,递归地复制源对象的所有属性和子对象,确保新对象完全独立于源对象。 了解并熟练掌握这些JavaScript对象的知识点,对于编写高效、可维护的JavaScript代码至关重要。通过不断实践和学习,你将能够更深入地理解JavaScript的面向对象编程特性。
- 1
- 粉丝: 29
- 资源: 4675
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助