色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 原型鏈繼承

吳曉飛1年前8瀏覽0評論
<\p>javascript作為一門腳本語言,一直以來都備受程序員們的喜愛。javascript與其他語言相比,最大的優(yōu)點之一便是其原型鏈繼承。原型鏈繼承是javascript中的一種繼承方式,后繼者通過繼承前驅(qū)者的原型對象來繼承其屬性和方法。今天我們就來詳細(xì)了解一下javascript的原型鏈繼承。<\p><\p>首先,我們來看一個例子:<\p>
function Animal(name){
this.name = name;
}
Animal.prototype.sayName = function(){
console.log('My name is ' + this.name);
}
function Dog(name, type){
this.type = type;
Animal.call(this, name);
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.sayType = function(){
console.log('My type is ' + this.type);
}
var smallDog = new Dog('poodle', 'small');
smallDog.sayName();
smallDog.sayType();
<\p>這里我們定義了一個Animal構(gòu)造函數(shù)和一個Dog構(gòu)造函數(shù),其通過繼承Animal的原型對象來實現(xiàn)自身的屬性和方法。在創(chuàng)建Dog函數(shù)的時候,我們調(diào)用了Animal函數(shù),并將其綁定到Dog函數(shù)的this上。然后將Dog的原型對象設(shè)置為Animal的原型對象,最后使用Dog自身的方法來完成繼承。運行后可以看到輸出結(jié)果為:<\p>
My name is poodle
My type is small
<\p>從輸出結(jié)果中可以很清晰地看出,Dog函數(shù)成功地繼承了Animal函數(shù)的屬性和方法。但是,我們在這里要強調(diào)的是,javascript中的原型鏈繼承并非真正意義上的繼承,它只是利用了javascript中一些特殊的語法規(guī)則,因此在使用原型鏈繼承的過程中,我們需要注意一些細(xì)節(jié)。<\p><\p>首先,我們注意到在Dog的構(gòu)造函數(shù)中,我們必須調(diào)用Animal函數(shù),并將其綁定到Dog函數(shù)的this上,以便在Dog實例化后,我們可以在其身上找到Animal的屬性和方法。此外,我們還需要手動地將Dog的原型對象設(shè)置為Animal的原型對象,以便讓Dog繼承Animal的方法和屬性。最后指定Dog自身的方法,當(dāng)然也可以不定,具體實現(xiàn)方式則取決于使用者的需求。<\p><\p>除此之外,我們還要注意原型鏈繼承中可能出現(xiàn)的一些問題。比如,在上例中,如果我們修改了Animal原型對象上的sayName方法,那么Dog函數(shù)也會受到影響,無論是在實例化前還是實例化后都是如此,這是因為Dog函數(shù)的原型對象實際上鏈接到了Animal函數(shù)的原型對象上。在實際開發(fā)中,應(yīng)該避免修改原型對象上的方法和屬性,以便避免出現(xiàn)這類問題。如果確實需要修改,可以通過重新定義方法或者使用Object.create()來重設(shè)原型對象來繞過這個問題。<\p><\p>總結(jié)起來,javascript的原型鏈繼承是一種特殊的繼承方式,它通過繼承前驅(qū)者的原型對象來實現(xiàn)后繼者的屬性和方法。如果我們在使用原型鏈繼承的過程中熟練掌握方法和屬性的鏈接關(guān)系,以及注意一些可能出現(xiàn)的問題,那么就能很好地運用原型鏈繼承來完成程序的開發(fā)。<\p>
上一篇oracle 視圖