面向对象的js(1)

编程语言安装数据类型大体可以分为两类:一类是静态类型语言,另一类是动态类型语言。

静态类型语言:编译时已经确定变量的类型。

动态类型语言:变量类型要到程序运行的时候,带变量被赋予某个值之后,才会具有某种类型。

鸭子类型:行为一致,只关注对象行为,不关注对象本身。

多态:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。

多态代码:

var makeSound=function(animal){
    if( animal instanceof Duck){
        console.log('嘎嘎嘎');
    }else if(animal instanceof Chicken){
        console.log('咯咯咯');
    }
}
var Duck=function(){};
var Chicken=function(){};
makeSound( new Duck() );   //嘎嘎嘎
makeSound( new Chicken() );  //咯咯咯
对象的对台行:

var makeSound=function(animal){
    animal.sound();
}
var Duck=function(){};
Duck.prototype.sound=function(){
    console.log('嘎嘎嘎');
}
var Chicken=function(){};
Chicken.prototype.sound=function(){
    console.log('咯咯咯');
}
makeSound( new Duck() );
makeSound( new Chicken() );
var Dog=function(){};
Dog.prototype.sound=function(){
    console.log('汪汪汪');
}
makeSound( new Dog() );

多态最根本的作用就是通过过程化的条件分支语句转化为对象的多态性,从而消除这些条件分支语句。

var googleMap={
    show: function(){
        console.log('开始渲染谷歌地图');
    }
}
var baiduMap={
    show: function(){
        console.log('开始渲染百度地图');
    }
}
var renderMap = function(type){
    if( type === 'google' ){
        googleMap.show();
    }else if( type === 'baidu' ){
        
    }
}
renderMap();


var googleMap={
    show: function(){
        console.log('开始渲染谷歌地图');
    }
}
var baiduMap={
    show: function(){
        console.log('开始渲染百度地图');
    }
}
var renderMap = function(map){
    if(map.show instanceof Function){
        map.show();
    }
}
renderMap(baiduMap);

封装:封装的目的是将信息隐藏。封装是封装数据和封装实现。更广义的封装是不仅包含封装数据和封装实现,还包括封装类型和封装变化,

封装数据:对外不提供变量访问权限。

封装的目的是将信息隐藏,封装应该被视为“任何形式的封装”,也就是说,封装不仅仅是隐藏数据,海包括隐藏实现细节、设计细节以及隐藏对象的类型。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值