js的經典就是原型繼承!但是下面不是原型繼承,儘管原型繼承是js繼承的經典,由於具有許多問題,所以可以對其加以修改
下面列舉的實際上是混合繼承
【今天又遇到了這個尷尬的問題,但是忘記了記在哪裏?這次決定放在網上,以供參考】
<script type="text/javascript">
var Range = function(document){
this.doc = document;
}
Range.prototype = {
sayDocument:function(){
alert(this.doc);
}
}
function MyRange(a){
Range.call(this,arguments);//借用構造函數繼承。優點:可以給構造函數傳入自己的屬性,缺點:無法獲得原型鏈的屬性。這不得累死
}
MyRange.prototype = new Range();//原型繼承,可以按照原型鏈進行查找
MyRange.prototype.constructor = MyRange;//這個不要忘了把constructor改過來
var example = new MyRange(3);
console.log(example)//包括了該有的方法和屬性,以及另外的一個屬性
</script>
ps:混合繼承比較實用!