当前位置:首页 > 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 的原型实现主要基于 JavaScript 的原型链机制,通过扩展 Vue 构造函数的原型对象(Vue.prototype)来添加全局方法或属性。这种设计允许所有 V…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现弹框

js实现弹框

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