再談js原型繼承

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:混合繼承比較實用!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章