欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 對象 繼承

林國瑞1年前6瀏覽0評論

在 JavaScript 中,對象繼承是一種非常常見的概念,它被廣泛地應用于各種場景中。

在使用對象繼承的時候,我們需要先了解 JavaScript 中的兩種主要的對象類型:原始類型和引用類型。

原始類型包括:字符串、數字、布爾值、null、undefined;引用類型包括:對象、數組、函數。

當一個對象通過繼承的方式來獲取另一個對象的屬性和方法時,我們通??梢允褂迷玩?。

function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name + ', I am ' + this.age + ' years old.');
}
var p1 = new Person('Tom', 18);
p1.sayHello();  // Hello, my name is Tom, I am 18 years old.

在上述代碼中,我們定義了一個 Person 類,它有一個 sayHello 方法。我們用 new 運算符創建了一個 p1 對象,并調用了 p1 的 sayHello 方法。由于 p1 對象本身沒有 sayHello 方法,因此在查找其屬性時,JavaScript 引擎會通過原型鏈找到 Person.prototype 對象,從而訪問到 sayHello 方法。

通過這個例子,我們可以看出 JavaScript 中的對象繼承實際上是通過原型鏈來實現的。每個對象都有一個 __proto__ 屬性,指向它的原型對象。當我們訪問一個對象的屬性或方法時,如果該對象本身沒有這個屬性或方法,就會沿著原型鏈向上查找。

除了原型鏈,ES6 還引入了一種更簡單的對象繼承機制:Class。

class Animal {
constructor(type) {
this.type = type;
}
sayHello() {
console.log('I am a ' + this.type);
}
}
class Cat extends Animal {
constructor(name) {
super('cat');  // 調用父類的 constructor
this.name = name;
}
sayHello() {
console.log('Hello, my name is ' + this.name + ', I am a ' + this.type);
}
}
var c1 = new Cat('Mimi');
c1.sayHello();  // Hello, my name is Mimi, I am a cat

在這個例子中,我們首先定義了一個 Animal 類,它有一個構造函數和一個 sayHello 方法。然后我們定義了一個 Cat 類,它繼承了 Animal 類并擴展了一個 name 屬性和一個覆蓋了 sayHello 方法。

注意,在 Cat 類的構造函數中,我們使用了 super 關鍵字來調用父類的 constructor。在 Cat 類的 sayHello 方法中,我們使用了 this.name 和 this.type 來訪問 Cat 對象和 Animal 對象的屬性。

無論是原型鏈還是 Class,對象繼承都是 JavaScript 中非常重要的概念。通過對象繼承,我們可以構建出更為復雜的數據結構和系統,為 JavaScript 程序的開發帶來便利。