当前位置:首页 > JavaScript

js实现一个面向对象

2026-03-02 02:23:00JavaScript

面向对象编程基础

JavaScript 是一种基于原型的面向对象语言,可以通过构造函数、原型链以及 ES6 的 class 语法实现面向对象编程。

使用构造函数和原型链

通过构造函数定义对象的属性和方法,原型链用于共享方法以减少内存占用。

function Person(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype.greet = function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};

const person1 = new Person("Alice", 25);
person1.greet(); // 输出: Hello, my name is Alice and I am 25 years old.

使用 ES6 的 class 语法

ES6 引入了 class 关键字,使面向对象编程更接近传统语言(如 Java 或 C++)。

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    greet() {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Bob", 30);
person1.greet(); // 输出: Hello, my name is Bob and I am 30 years old.

继承的实现

通过 extends 关键字实现继承,子类可以继承父类的属性和方法。

class Student extends Person {
    constructor(name, age, grade) {
        super(name, age); // 调用父类的构造函数
        this.grade = grade;
    }

    study() {
        console.log(`${this.name} is studying in grade ${this.grade}.`);
    }
}

const student1 = new Student("Charlie", 18, 12);
student1.greet(); // 输出: Hello, my name is Charlie and I am 18 years old.
student1.study(); // 输出: Charlie is studying in grade 12.

封装与访问控制

JavaScript 本身没有严格的私有成员支持,但可以通过闭包或 Symbol 实现类似效果。

class BankAccount {
    constructor(balance) {
        let _balance = balance; // 私有变量

        this.getBalance = function() {
            return _balance;
        };

        this.deposit = function(amount) {
            _balance += amount;
        };
    }
}

const account = new BankAccount(1000);
console.log(account.getBalance()); // 输出: 1000
account.deposit(500);
console.log(account.getBalance()); // 输出: 1500

多态的实现

多态通过方法重写实现,子类可以覆盖父类的方法。

class Animal {
    speak() {
        console.log("Animal makes a sound");
    }
}

class Dog extends Animal {
    speak() {
        console.log("Dog barks");
    }
}

const animal = new Animal();
const dog = new Dog();

animal.speak(); // 输出: Animal makes a sound
dog.speak();    // 输出: Dog barks

静态方法与属性

静态方法和属性属于类本身,而不是实例。

class MathUtils {
    static PI = 3.14159;

    static add(a, b) {
        return a + b;
    }
}

console.log(MathUtils.PI); // 输出: 3.14159
console.log(MathUtils.add(2, 3)); // 输出: 5

js实现一个面向对象

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

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现

js实现

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

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…