
JavaScript面向对象编程主要通过原型链、构造函数和ES6的class语法来实现。它们各有特点,也适用于不同的场景。
原型链、构造函数、ES6 Class。
原型链的核心在于每个JavaScript对象都有一个指向其原型对象的内部链接,这个原型对象又有自己的原型,以此类推,直到到达
null
举个例子,假设我们有一个
Animal
Dog
Dog
Animal
立即学习“Java免费学习笔记(深入)”;
function Animal(name) {
this.name = name;
}
Animal.prototype.sayHello = function() {
console.log("Hello, I'm " + this.name);
};
function Dog(name, breed) {
Animal.call(this, name); // 调用Animal构造函数,设置Dog的name属性
this.breed = breed;
}
// 设置Dog的原型为Animal的实例,Dog就可以继承Animal原型上的方法
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog; // 修复Dog的constructor指向
Dog.prototype.bark = function() {
console.log("Woof!");
};
const myDog = new Dog("Buddy", "Golden Retriever");
myDog.sayHello(); // 输出 "Hello, I'm Buddy"
myDog.bark(); // 输出 "Woof!"在这个例子中,
Dog.prototype = Object.create(Animal.prototype)
Animal.prototype
Dog.prototype
Dog
Animal
sayHello
Animal.call(this, name)
Dog
Animal
name
需要注意的是,原型链查找属性的过程是动态的。如果在创建对象之后修改了原型对象,那么所有基于该原型创建的对象都会受到影响。
构造函数模式是JavaScript中创建对象的一种常用方式。它通过
new
优点:
缺点:
Northstar盈富量化交易软件是一个基于B/S架构的一站式量化交易平台,能进行历史回放、策略研发、模拟交易、实盘交易。 已对接国内期货CTP交易系统,并陆续补充国内股票XTP渠道、老虎证券、币安等多种渠道。这是一个面向程序员的开源高频量化交易软件,用于期货、股票、外汇、炒币等多种交易场景,实现自动交易。暂时只对接了国内期货交易所,理论上可以对接任意交易所。 功能特性:1、一站式平台,可适配对接
34
instanceof
为了解决方法重复创建的问题,通常会将方法定义在原型对象上,而不是构造函数内部。这样,所有实例共享同一个方法,节省内存。
例如:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name + " and I'm " + this.age + " years old.");
};
const person1 = new Person("Alice", 30);
const person2 = new Person("Bob", 25);
person1.sayHello(); // 输出 "Hello, my name is Alice and I'm 30 years old."
person2.sayHello(); // 输出 "Hello, my name is Bob and I'm 25 years old."在这个例子中,
sayHello
Person.prototype
Person
ES6 引入的
class
class
class
prototype
例如:
class Animal {
constructor(name) {
this.name = name;
}
sayHello() {
console.log("Hello, I'm " + this.name);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // 调用父类的构造函数
this.breed = breed;
}
bark() {
console.log("Woof!");
}
}
const myDog = new Dog("Buddy", "Golden Retriever");
myDog.sayHello(); // 输出 "Hello, I'm Buddy"
myDog.bark(); // 输出 "Woof!"
console.log(typeof Animal); // 输出 "function"
console.log(Animal.prototype.constructor === Animal); // 输出 true在这个例子中,
Animal
Dog
extends
Dog.prototype.__proto__ = Animal.prototype
super()
class
class
class
class
虽然
class
以上就是JavaScript面向对象编程的三种实现方式的详细内容,更多请关注php中文网其它相关文章!
编程怎么学习?编程怎么入门?编程在哪学?编程怎么学才快?不用担心,这里为大家提供了编程速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号