当前位置:首页 > JavaScript

js实现原型

2026-04-06 03:37:20JavaScript

原型的基本概念

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

创建原型的方法

使用构造函数和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

使用Object.create()
Object.create()可以直接指定新对象的原型。

const personProto = {
    greet() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

const person2 = Object.create(personProto);
person2.name = "Bob";
person2.greet(); // 输出: Hello, my name is Bob

修改原型链

动态修改原型
可以通过__proto__Object.setPrototypeOf()动态修改对象的原型(不推荐在生产环境中使用__proto__)。

const animal = {
    sound: "Generic sound",
    makeSound() {
        console.log(this.sound);
    }
};

const dog = {
    sound: "Bark"
};

Object.setPrototypeOf(dog, animal);
dog.makeSound(); // 输出: Bark

原型链的继承

实现继承
通过组合构造函数和原型链实现继承。

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

Animal.prototype.speak = function() {
    console.log(`${this.name} makes a noise.`);
};

function Dog(name) {
    Animal.call(this, name); // 调用父类构造函数
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

const dog1 = new Dog("Rex");
dog1.speak(); // 输出: Rex makes a noise.

检查原型关系

使用instanceof和isPrototypeOf
instanceof检查对象是否在原型链上,isPrototypeOf检查某个对象是否是另一个对象的原型。

console.log(dog1 instanceof Dog); // true
console.log(Dog.prototype.isPrototypeOf(dog1)); // true

现代语法:Class语法糖

ES6的class语法简化了原型操作,但底层仍基于原型链。

js实现原型

class Animal {
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(`${this.name} makes a noise.`);
    }
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

const dog2 = new Dog("Max");
dog2.speak(); // 输出: Max barks.

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

相关文章

js 实现vue

js 实现vue

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

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…