当前位置:首页 > JavaScript

js 实现面向对象

2026-01-30 11:15:52JavaScript

基于原型的面向对象实现

JavaScript 使用原型链实现面向对象编程。每个对象都有一个隐藏属性 [[Prototype]](可通过 __proto__Object.getPrototypeOf() 访问),当访问对象属性时,若当前对象不存在该属性,会沿原型链向上查找。

构造函数通过 new 关键字创建实例:

function Person(name) {
  this.name = name;
}
Person.prototype.sayHello = function() {
  console.log(`Hello, I'm ${this.name}`);
};
const person = new Person('Alice');
person.sayHello(); // 输出: Hello, I'm Alice

类语法(ES6)

ES6 引入 class 语法糖,本质仍是基于原型的实现:

js 实现面向对象

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a noise`);
  }
}
class Dog extends Animal {
  speak() {
    super.speak();
    console.log(`${this.name} barks`);
  }
}
const dog = new Dog('Rex');
dog.speak();

对象字面量与工厂模式

通过对象字面量直接创建对象:

const car = {
  brand: 'Toyota',
  drive() {
    console.log(`Driving ${this.brand}`);
  }
};

工厂函数模式:

js 实现面向对象

function createUser(name) {
  return {
    name,
    logName() {
      console.log(this.name);
    }
  };
}
const user = createUser('Bob');

属性描述符与对象控制

使用 Object.defineProperty 定义属性特性:

const obj = {};
Object.defineProperty(obj, 'readOnlyProp', {
  value: 42,
  writable: false,
  enumerable: true
});

混入(Mixin)模式

实现多重继承的方式:

const canEat = {
  eat() {
    console.log('Eating');
  }
};
const canWalk = {
  walk() {
    console.log('Walking');
  }
};
function Person() {}
Object.assign(Person.prototype, canEat, canWalk);

标签: 面向对象js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js jquery

js jquery

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现防洪

js实现防洪

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