第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

JavaScript函數(shù)繼承

標(biāo)簽:
JavaScript

在ES6中有了继承,使用extends关键字就能实现。但这里讲的讲的不是这种,而是ES6之前的几种实现继承的方式。

(一)原型继承

ECMAScript中将原型链作为实现继承的主要方法。其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。

例如:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>            function Person(){                this.name = 'zs';                this.age = 18;                this.sex = '男';
            }            
            function Student(){                this.score = 100;
            }
            
            Student.prototype = new Person();
            Student.prototype.constructor = Student;            
            var s1 = new Student();
            console.log(s1.constructor);
            console.dir(s1);            
            
            //原型继承 :不能设置构造函数的参数
        </script>
    </body>
</html>

 

 

(二)借用构造函数

在解决原型中包含引用类型值所带来的问题中,使用借用构造函数技术来解决。借用构造函数的基本思想,即在子类型构造函数的内部调用超类型构造函数。函数只不过是在特定环境中执行代码的对象,因此通过使用call()方法可以在新创建的对象上执行构造函数。

例如:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>            //借用构造函数
            function Person(name,age,sex){                this.name = name;                this.age = age;                this.sex = sex;
            }            //子类型
            function Student(name,age,sex,score){
                Person.call(this,name,age,sex);  //this 为学生对象
                this.score = score;
            }            
            var student = new Student('zs',18,'男',100);
            console.dir(student)        </script>
    </body>
</html>

 

 

 

(三)组合继承

组合继承,指的是将原型链和借用构造函数的技术组合到一起。思路是使用原型链实现对原型方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数的复用,又能够保证每个实例都有它自己的属性。

例如

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>            //组合继承:借用构造函数 +原型继承
            function Person(name,age,sex){                this.name = name;                this.age = age;                this.sex = sex;
            }
            Person.prototype.sayHi = function(){
                console.log(this.name);
            }            function Student(name,age,sex,score){                //借用构造函数,继承属性
                Person.call(this,name,age,sex);  //this 为学生对象
                
                this.score = score;
            }            //原型继承,继承方法
            Student.prototype = new Person();
            Student.prototype.constructor = Student;            
            
            var student = new Student('zs',18,'男',100);
            console.dir(student)        </script>
    </body>
</html>

组合继承避免了原型链和借用构造函数的缺点,融合了他们的优点,是JavaScript中最常用的继承模式。

 

(四)继承的原型图

通过画图的形式,可以更直观的了解到继承的原理

 

 

特此声明:如需转载请注明出处,如有疑问请及时提出以便于改正,如有侵权,联系删除,谢谢

作者:bignewbie

原文链接:https://www.cnblogs.com/CGWTQ/p/10426227.html


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消