当前位置:首页 > JavaScript

js实现原型

2026-02-01 10:53:04JavaScript

原型的基本概念

在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个对象。原型用于实现继承和共享属性。通过原型,可以避免在每个实例中重复定义方法和属性,从而节省内存。

创建原型的方式

使用构造函数创建原型是一种常见方法。构造函数通过new关键字调用时,会创建一个新对象,并将该对象的原型指向构造函数的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

修改原型对象

原型对象可以在运行时动态修改。所有实例会共享这些修改,即使实例在修改之前已经创建。

js实现原型

Person.prototype.sayGoodbye = function() {
  console.log(`Goodbye from ${this.name}`);
};

person1.sayGoodbye(); // 输出: Goodbye from Alice

原型链的查找机制

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

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

使用Object.create创建原型

Object.create方法可以显式指定新对象的原型。这种方式更灵活,适合不需要构造函数的场景。

js实现原型

const animal = {
  makeSound() {
    console.log(`${this.sound}`);
  }
};

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

原型继承的注意事项

原型继承可能导致共享属性的意外修改。如果原型属性是引用类型(如数组或对象),所有实例会共享同一引用。

function Team() {}
Team.prototype.members = [];

const team1 = new Team();
team1.members.push('Alice');
const team2 = new Team();
console.log(team2.members); // 输出: ['Alice']

ES6的class语法

ES6引入了class语法,本质上是原型的语法糖。class提供了更清晰的语法来实现原型继承。

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 dog = new Dog('Rex');
dog.speak(); // 输出: Rex barks.

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

相关文章

vue原型实现

vue原型实现

Vue 原型实现的核心原理 Vue 的原型实现主要基于 JavaScript 的原型链机制,通过扩展 Vue 构造函数的原型对象(Vue.prototype)来添加全局方法或属性。这种设计允许所有 V…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…