javascript的oop怎么写
这篇“javascript的oop怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“javascript的oop怎么写”文章吧。
原型(prototype)和构造函数(constructor)
在JavaScript中,一个对象的属性和方法可以通过原型来共享,而构造函数则用于创建一个新对象并初始化其属性。以下是一个使用构造函数和原型的简单例子:
function Person(name, age) { this.name = name; this.age = age;}Person.prototype.sayHi = function() { console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.");}var person1 = new Person("John", 30);var person2 = new Person("Mary", 25);person1.sayHi(); // Hi, my name is John and I'm 30 years old.person2.sayHi(); // Hi, my name is Mary and I'm 25 years old.
在上面的例子中,我们定义了一个Person
构造函数,初始化了name
和age
属性。然后,我们使用Person.prototype
给每个Person
对象添加了一个sayHi
方法,这个方法可以被所有Person
对象共享。最后,我们创建了两个Person
对象,并调用了它们的sayHi
方法。
类(class)
在ES6中,JavaScript引入了类的概念,并使用关键字class
来实现。类提供了一种更简洁、更易于理解的语法,用于定义对象。
以下是一个使用类的例子:
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHi() { console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old."); }}let person1 = new Person("John", 30);let person2 = new Person("Mary", 25);person1.sayHi(); // Hi, my name is John and I'm 30 years old.person2.sayHi(); // Hi, my name is Mary and I'm 25 years old.
在上面的例子中,我们使用class
关键字定义了一个Person
类,并在constructor
方法中初始化了name
和age
属性。然后,我们定义了一个sayHi
方法,用于输出一个招呼。最后,我们创建了两个Person
对象,并调用了它们的sayHi
方法。
继承(inheritance)
在OOP中,继承是指从一个已有的对象中派生出一个新的对象,新对象继承了原来的对象的属性和方法。在JavaScript中,继承可以通过使用prototype
和class
来实现。
以下是使用prototype
实现继承的例子:
function Person(name, age) { this.name = name; this.age = age;}Person.prototype.sayHi = function () { console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.");}function Student(name, age, major) { Person.call(this, name, age); this.major = major;}Student.prototype = Object.create(Person.prototype);Student.prototype.constructor = Student;Student.prototype.sayMajor = function() { console.log("My major is " + this.major + ".");}let person1 = new Person("John", 30);let student1 = new Student("Mary", 25, "Computer Science");person1.sayHi(); // Hi, my name is John and I'm 30 years old.student1.sayHi(); // Hi, my name is Mary and I'm 25 years old.student1.sayMajor(); // My major is Computer Science.
在上面的例子中,我们定义了一个Person
构造函数,在原型中添加了sayHi
方法。另外,我们定义了一个Student
构造函数,通过使用call
方法调用了Person
构造函数来初始化name
和age
属性,并添加了一个major
属性。然后,我们使用Object.create
方法创建了一个Person.prototype
的副本,并将其指定给Student.prototype
,以便Student
对象可以继承Person
对象的属性和方法。最后,我们定义了一个sayMajor
方法,用于输出学生的专业。最终,我们创建了一个Person
对象和一个Student
对象,并调用了他们的方法。
以下是使用class
实现继承的例子:
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHi() { console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.") }}class Student extends Person { constructor(name, age, major) { super(name, age); this.major = major; } sayMajor() { console.log("My major is " + this.major + "."); }}let person1 = new Person("John", 30);let student1 = new Student("Mary", 25, "Computer Science");person1.sayHi(); // Hi, my name is John and I'm 30 years old.student1.sayHi(); // Hi, my name is Mary and I'm 25 years old.student1.sayMajor(); // My major is Computer Science.
在上面的例子中,我们定义了一个Person
类,在constructor
方法中初始化了name
和age
属性,并在sayHi
方法中输出了一个招呼。然后,我们使用extends
关键字创建了一个Student
类,并使用super
关键字调用了Person
类的constructor
方法来初始化name
和age
属性,并添加了一个major
属性。最后,我们定义了一个sayMajor
方法,用于输出学生的专业。最终,我们创建了一个Person
对象和一个Student
对象,并调用了他们的方法。
以上就是关于“javascript的oop怎么写”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341