当前位置:首页 > JavaScript

js原型实现

2026-03-14 16:51:21JavaScript

原型的基本概念

在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个对象。通过原型,对象可以继承其他对象的属性和方法。原型链是JavaScript实现继承的主要机制。

原型链的实现

每个构造函数都有一个prototype属性,指向一个对象,这个对象就是通过该构造函数创建的实例的原型。实例通过proto属性访问其原型。

function Person(name) {
    this.name = name;
}

Person.prototype.sayHello = function() {
    console.log('Hello, ' + this.name);
};

const person1 = new Person('Alice');
person1.sayHello(); // 输出: Hello, Alice

原型继承

通过将一个构造函数的prototype指向另一个构造函数的实例,可以实现原型继承。这样,子类的实例可以访问父类的属性和方法。

function Parent(name) {
    this.name = name;
}

Parent.prototype.sayName = function() {
    console.log('My name is ' + this.name);
};

function Child(name, age) {
    Parent.call(this, name);
    this.age = age;
}

Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

Child.prototype.sayAge = function() {
    console.log('I am ' + this.age + ' years old');
};

const child = new Child('Bob', 10);
child.sayName(); // 输出: My name is Bob
child.sayAge(); // 输出: I am 10 years old

修改原型

可以通过直接修改prototype对象来动态添加或修改方法。所有实例都会立即继承这些变化。

function Car() {}

const car1 = new Car();
Car.prototype.drive = function() {
    console.log('Driving...');
};

car1.drive(); // 输出: Driving...

原型链的终点

所有对象的原型链最终都会指向Object.prototype,而Object.prototype的原型是null。

console.log(Object.prototype.__proto__); // 输出: null

检查原型关系

可以使用instanceof运算符检查对象是否在某个构造函数的原型链上,或者使用isPrototypeOf方法检查一个对象是否是另一个对象的原型。

js原型实现

console.log(child instanceof Parent); // 输出: true
console.log(Parent.prototype.isPrototypeOf(child)); // 输出: true

标签: 原型js
分享给朋友:

相关文章

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…