当前位置:首页 > 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
分享给朋友:

相关文章

js实现日历

js实现日历

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

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现授权

js实现授权

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

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…