了解JavaScript中的prototype (实例)


JavaScript中的`prototype`是理解面向对象编程的关键概念之一。它是一种机制,允许对象共享属性和方法,从而实现代码复用。在JavaScript中,每个函数(包括构造函数)都有一个内置的`prototype`属性,这个属性指向一个对象,该对象包含了可以被该函数的所有实例共享的属性和方法。 当我们创建一个新对象时,它会继承其构造函数的`prototype`对象。当我们尝试访问新对象的一个属性,如果这个属性不存在于该对象自身,JavaScript引擎会向上查找`__proto__`链,直到找到该属性或者到达原型链的顶端——即`null`。 **一、原型链** 原型链是由对象的`__proto__`属性构成的,这个属性引用了创建该对象的函数的`prototype`。在旧版浏览器中,可以通过`__proto__`直接访问,但在ES5及以后的规范中,推荐使用`Object.getPrototypeOf`或`Object.prototype.isPrototypeOf`来操作原型链。 ```javascript function Person() {} let person = new Person(); console.log(Object.getPrototypeOf(person) === Person.prototype); // true ``` **二、原型对象的属性和方法** 1. **`constructor`**: 原型对象上有一个`constructor`属性,它指向创建当前对象的构造函数。这有助于追踪对象的起源。 ```javascript Person.prototype.constructor === Person; // true ``` 2. **添加属性和方法**: 可以直接在构造函数的`prototype`上添加属性和方法,这样所有通过该构造函数创建的对象都能访问到这些属性和方法。 ```javascript Person.prototype.name = "John Doe"; Person.prototype.sayHello = function() { console.log("Hello, I'm " + this.name); }; ``` **三、`__proto__`与`prototype`的区别** `__proto__`是对象的内部属性,而`prototype`是函数的属性。`__proto__`用于表示对象的继承关系,而`prototype`则用于定义构造函数的继承。 **四、`Object.create()`和`new`操作符** `Object.create()`函数允许我们创建一个新对象,并将新对象的`__proto__`设置为指定的对象,实现继承。而`new`操作符则是通过调用构造函数并设置`__proto__`来创建新对象。 ```javascript let student = Object.create(Person.prototype); student.constructor = Person; ``` 与`new`操作符相比,`Object.create()`提供了更细粒度的控制,但`new`操作符在实际开发中更为常见。 **五、`instanceof`运算符** `instanceof`用于检查对象是否具有特定的原型链。如果对象的`__proto__`链中存在指定构造函数的`prototype`,则返回`true`。 ```javascript person instanceof Person; // true student instanceof Person; // true,因为student.__proto__.__proto__ === Person.prototype ``` **六、`isPrototypeOf()`方法** `isPrototypeOf()`方法用于判断传入的对象是否存在于当前对象的原型链中。 ```javascript Person.prototype.isPrototypeOf(person); // true ``` 总结,`prototype`在JavaScript中起着核心作用,它是实现面向对象编程的重要一环。理解`prototype`以及相关的原型链、继承和对象创建方式,对于深入学习JavaScript至关重要。
































- 1


- 粉丝: 388
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (2025)初级会计考试试题题库及答案(完整版).docx
- (2025)初级会计考试题库 (含答案).docx
- (2025)初级会计实务真题及答案.docx
- (2025)初级会计职称初级会计实务考试试题及答案.docx
- (2025)初级会计职称初级会计实务考试试题与答案.docx
- (2025)初级会计职称考试全套真题及答案.docx
- (2025)初级会计职称考试全套真题与答案.docx
- (2025)初级会计职称考试题库(附参考答案).docx
- (2025)初级社工考试试卷真题及答案.docx
- (2025)初级社会工作者《工作实务》试题及答案.docx
- (2025)初级社会工作者《工作实务》试题和答案.docx
- (2025)初级社会工作者《工作实务》试题与答案.docx
- (2025)初级社工考试真题及答案.docx
- (2025)初级社会工作者考试《社会工作综合能力》真题及答案.docx
- (2025)初级社会工作者工作实务真题及答案.docx
- (2025)初级社会工作者考试《社会工作综合能力》真题与答案.docx


