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

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

JavaScript設(shè)計(jì)模式基礎(chǔ)之面向?qū)ο蟮腏avaScript(一)

標(biāo)簽:
JavaScript

动态语言类型与鸭子类型

此内容取自JavaScript设计模式与开发实践一书

编程语言按照数据类型大体可以分为2类,一类就是静态类型语言,另一类则是动态类型语言

静态类型语言也可以称之为编译语言,而动态类型语言则称可以之为解释型语言

JavaScript则属于动态类型语言他无需定义时候声明类型给实际编码带来了极大的灵活性,且可以尝试调用任何对象的任意方法,

而无需考虑它原本是否被设计为拥有该方法。

这其实也叫做鸭子类型 鸭子类型的定义为:如果它走起来像鸭子,叫起来也像鸭子,那么它就是鸭子

举个小例子:

  在一个动物王国中,国王觉得鸭子的声音是最美妙的,于是他要建立一个有2000个鸭子的合唱团,但是大臣们找遍了王国

却只能找到1999只鸭子始终是缺一只,最后一个大臣发现了一只特别的鸡,它的叫声和鸭子一模一样,于是这只鸡进入了合唱团

这个故事想要表达的意思是,国王要听的是鸭子的声音,但是这个声音的主人是鸭子还是鸡并不重要,哪怕它是条狗

 

下面上代码模拟一下这个故事:

 

复制代码

 let duck = {
            duckSinging(){
                console.log('嘎嘎嘎');
            }
        };
        let chicken = {
            duckSinging(){
                console.log('嘎嘎嘎');
            }
        }
        let choir = [] //合唱团
        let joinChoir = function(animal){            if(animal && Object.prototype.toString.call(animal.duckSinging) === '[object Function]'){
                choir.push(animal);
                console.log('欢迎加入合唱团');
                console.log(`合唱团成员数量已有${choir.length}`);
            }
        }
        joinChoir(duck);
        joinChoir(chicken);

复制代码

输出:

在动态类型语言的面向对象设计中,鸭子类型概念至关重要,利用鸭子类型的思想,我们不比借用超类型就能轻松实现动态语言

中的一个原则:“面向接口编程” 而不是面向实现编程

列如:一个对象若有push和pop方法并且正确实现,那么它就能当做栈来使用,如果有length属性,也可以依照下标来取值这个对象就能当做数组使用

“面向接口编程”是设计模式中最重要是思想

原文出处:https://www.cnblogs.com/y-y-y-y/p/9649560.html  

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

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

評(píng)論

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

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

100積分直接送

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

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

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

購(gòu)課補(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
提交
取消