当前位置:首页 > JavaScript

js原型实现

2026-04-06 10:40:57JavaScript

原型的概念

在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个对象。原型用于实现继承和共享属性、方法。通过原型链,对象可以访问其原型上的属性和方法。

原型的基本使用

通过构造函数创建对象时,新对象的原型会指向构造函数的prototype属性。例如:

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

Person.prototype.greet = function() {
    console.log(`Hello, my name is ${this.name}`);
};

const person1 = new Person('Alice');
person1.greet(); // 输出: Hello, my name is Alice

原型链的查找机制

当访问对象的属性或方法时,JavaScript引擎会先在对象自身查找。如果找不到,会沿着原型链向上查找,直到找到或到达原型链的顶端(null)。

js原型实现

console.log(person1.hasOwnProperty('name')); // true
console.log(person1.hasOwnProperty('greet')); // false

修改原型

可以直接修改构造函数的prototype属性来影响所有实例。需要注意的是,修改原型会影响所有已创建和未来创建的实例。

Person.prototype.farewell = function() {
    console.log(`${this.name} says goodbye!`);
};
person1.farewell(); // 输出: Alice says goodbye!

原型继承

通过将子类的原型设置为父类的实例,可以实现原型继承。

js原型实现

function Student(name, grade) {
    Person.call(this, name);
    this.grade = grade;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

Student.prototype.study = function() {
    console.log(`${this.name} is studying in grade ${this.grade}`);
};

const student1 = new Student('Bob', 5);
student1.greet(); // 输出: Hello, my name is Bob
student1.study(); // 输出: Bob is studying in grade 5

Object.create方法

Object.create方法可以创建一个新对象,并指定其原型。

const animal = {
    makeSound: function() {
        console.log(this.sound);
    }
};

const dog = Object.create(animal);
dog.sound = 'Woof!';
dog.makeSound(); // 输出: Woof!

原型与性能

频繁修改原型可能会影响性能,尤其是在大型应用中。建议在初始化阶段完成原型的修改,避免运行时动态修改。

检查原型关系

可以使用instanceof运算符或Object.getPrototypeOf方法来检查对象的原型关系。

console.log(student1 instanceof Person); // true
console.log(Object.getPrototypeOf(student1) === Student.prototype); // true

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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…