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

javascript中的原型鏈和繼承

趙錦艷1年前8瀏覽0評論

在Javascript中,對象的屬性可以通過原型繼承來獲取,這種繼承方式就被稱為原型鏈繼承。原型鏈機制是Javascript中最為重要的一部分,也是面向對象編程的基礎之一。

在Javascript中,每一個對象都有一個內部指針,指向它的原型(prototype)。原型本身也是一個對象,它也有自己的原型,以此類推,這樣就形成了一個原型鏈。如果一個對象在原型鏈中找不到所需的屬性或方法,它就會順著原型鏈往上尋找,直到找到為止。

function Person(name) {
this.name = name;
}
Person.prototype.sayName = function () {
console.log(this.name);
};
var p = new Person("Tom");
p.sayName();

在上面的示例中,我們定義了一個Person對象的構造函數,并且給它的原型添加了一個sayName方法。當我們創建一個新的Person實例時,它就會從它的原型鏈中繼承這個方法。當我們調用p.sayName()時,它會沿著原型鏈找到Person.prototype中的sayName方法并調用它。

在原型鏈中,如果一個對象的原型為null,意味著它已經到達了原型鏈的頂端。通常我們將Object.prototype作為原型鏈的頂端,因為Object.prototype不繼承任何屬性和方法。

var obj = {};
console.log(obj.toString());

在上面的示例中,我們創建了一個空對象obj,并調用了它的toString方法。由于obj自身并沒有toString方法,它會沿著原型鏈找到Object.prototype中的toString方法并調用它。

在Javascript中,由于原型鏈機制的存在,我們可以利用它來實現繼承。在繼承中,子類可以繼承父類的屬性和方法,并且可以在自己的原型中添加新的方法或者修改父類的屬性和方法。

function Animal() {
this.type = "Animal";
}
Animal.prototype.sayType = function () {
console.log(this.type);
};
function Cat() {
this.type = "Cat";
}
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;
var c = new Cat();
console.log(c.type);
c.sayType();

在上面的示例中,我們定義了一個Animal構造函數和一個Cat構造函數,Cat繼承了Animal。在Cat.prototype中設置Animal的實例,這樣Cat實例就可以沿著原型鏈找到Animal的屬性和方法。同時,我們也需要重設Cat.prototype.constructor屬性,使其指向Cat而不是Animal。

總之,在Javascript中,原型鏈機制是實現繼承最常用的一種方式。通過原型鏈,我們可以沿著繼承鏈獲取任何對象的屬性和方法,同時也可以通過繼承來自定義自己的屬性和方法。