您好,登錄后才能下訂單哦!
這篇“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怎么寫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。