Es5 繼承

Es5 對(duì)象和原型鏈實(shí)現(xiàn)混合繼承

方法的區(qū)別

在構(gòu)造函數(shù)和原型鏈添加方法區(qū)別:


Object.prototype.test=function(){

            alert('我是原型鏈上 test()');

        }

            function Person(){

                this.name='張三';

                this.age=20;

                function test(){

                    alert('我是Person上 test()')

                }

            }

            function Son(){



            }

            var p=new Son()

            p.test();

            //  打印的是原型鏈上 test()

結(jié)論: 原型鏈上的方法會(huì)被多個(gè)實(shí)例 共享,構(gòu)造函數(shù)不會(huì)

靜態(tài)方法:


function static(){

            }

            static.add=function(){

                alert('靜態(tài)方法')

            }

E5的繼承

原理: 原型鏈+對(duì)象冒充的組合繼承模式

對(duì)象冒充實(shí)現(xiàn)繼承


function Father(){

}

function Son(){

}function Father(){

          this.name='張三';

              this.age=20;

              this.test =function(){

                  alert('我是Father')

              }

}

function Son(){

              Father.call(this);  // 通過(guò)改變 this 指向 對(duì)象冒充繼承

          }

          var w=new Son();

          w.test();

總結(jié): 對(duì)象冒充可以繼承構(gòu)造的數(shù)里面的屬性和方法 但是無(wú)法繼承原型鏈上的屬性和方法

原型鏈實(shí)現(xiàn)繼承


        function Father(name,age){

            this.name='張三';

                this.age=20;

                this.test =function(){

                    alert('我是Father')

                }

  }

function Son(){

                Father.call(this);  // 通過(guò)改變 this 指向 對(duì)象冒充繼承

            }

            Father.prototype.wx=function(){

                alert('原型鏈上的方法')

            }

            Father.prototype.sex='男'

            Son.prototype=new Father()

            var w=new Son();

            w.wx();



**總結(jié)** 原型鏈實(shí)現(xiàn)繼承:可以繼示構(gòu)造數(shù)里面的屬性和方法也可以繼承原型鏈上面的屬性和方法 但是實(shí)例化子類時(shí)沒(méi)辦法給父類傳參

優(yōu)化



    function Father(name, age) {

            this.name = name;

            this.age = age;

            this.test = function () {

                alert(`我叫${name} 今年${age}`)

            }

        }

        function Son(name,age) {

            Father.call(this, name, age); // 通過(guò)改變 this 指向 對(duì)象冒充繼承

        }

        Father.prototype.wx = function () {

            alert('原型鏈上的方法')

        }

        Father.prototype.sex = '男'

        Son.prototype = new Father()

        var w = new Son('李白',20);

        w.test()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容