本帖最后由 大山哥哥 于 2017-2-28 12:12 编辑
“多态”按字面的意思就是“多种状态”,在面向对象的世界中,具体的来讲就是,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,
java多态
其中方法重载是多态效果之一(多个同名方法,他们的参数个数不一样)体现多态.同一个名字的方法被多次调用,由于传递的参数个数(或数据类型)不一样,导致请求的结果也不同。
php多态
继承抽象类可以体现多态,许多类都要把继承的抽象类的抽象方法给实现出来。导致的结果是不同类的对象有共同方法可以访问,访问的结果是不一样的。
工厂设计模式可以体现多态,实例化对象调用同一个方法,由于传递的参数不同,实例化的对象也不同。
javascript多态
javascript本身没有重载,更没有抽象类,(因为javascript中连类都没有),那在javascript中是怎么体现多态的?
我举一个简单的例子
[JavaScript] 纯文本查看 复制代码 function like(){
console.log(this.name+"喜欢"+this.hobby);
}
var XZ = {name:"小泽",hobby:"拍电影"};
var CJ = {name:"苍井",hobby:"拍照片"};
like.call(XZ);
like.apply(CJ);
效果
我们首先创建一个like的方法,然后我们又分别创建了XZ 和 CJ 两个对象,我们分别用XZ 和 CJ 去操作like方法 然后输出了不同的内容,不就是 “同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果”
其中 this也是多态的一个体现 ,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象
|