美文网首页
《javascript设计模式与开发实践阅读笔记一》

《javascript设计模式与开发实践阅读笔记一》

作者: 午夜书琳 | 来源:发表于2018-11-21 23:41 被阅读0次

1.多态
含义:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果;
核心思想:将“做什么”和“谁去做以及怎样去做”分离开来,也就是将“不变的事”和“可能改变的事物”分离开来;
eg:
“多态的代码”
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() );//汪汪汪
不用修改makeSound方法;
=====
静态语言用向上转型实现多态(比如继承),继承一个抽象对象,然后传参的时候传抽象对象,不具体到某个对象,其他对象继承抽象对象就行。
eg:Duck Chicken都继承自Animal类型,然后makeSound方法接受Animal为参数而不是具体的Duck或者Chicken
======
JavaScript动态语言,

相关文章

  • [记录]我的设计模式学习路径

    书单 《JavaScript 设计模式与开发实践》《设计模式之美》《掘金小册-JavaScript 设计模式核⼼原...

  • 设计模式系列笔记-代理模式

    写在前面:本系列文章内容为《JavaScript设计模式与开发实践》一书学习笔记,感谢作者曾探 代理模式 代理模式...

  • javascript设计模式与开发实践

    javascript设计模式与开发实践 设计模式 每个设计模式我们需要从三点问题入手: 定义 作用 用法与实现 单...

  • JS中的this

    参考书籍:《JavaScript设计模式与开发实践》;《JavaScript高级程序设计(第3版)》(以下简称《高...

  • this和call、apply 、bind

    参考《JavaScript设计模式与开发实践》 this 跟别的语言大相径庭的是,JavaScript的this总...

  • 《javascript设计模式与开发实践阅读笔记一》

    1.多态含义:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果;核心思想:将“做什么”和“谁去做以...

  • 基础

    JS 你不知道的 js 上中下 JavaScript 设计 模式 与 开发 实践 JavaScript 语言精粹 ...

  • 设计模式系列笔记-单例模式

    写在前面:本系列文章内容为《JavaScript设计模式与开发实践》一书学习笔记,感谢作者曾探 单例模式 定义:保...

  • 设计模式系列笔记-策略模式

    写在前面:本系列文章内容为《JavaScript设计模式与开发实践》一书学习笔记,感谢作者曾探 策略模式 在现实中...

  • 3. JavaScript 闭包和高阶函数

    本文源于本人关于《JavaScript设计模式与开发实践》(曾探著)的阅读总结。想详细了解具体内容建议阅读该书。 ...

网友评论

      本文标题:《javascript设计模式与开发实践阅读笔记一》

      本文链接:https://www.haomeiwen.com/subject/xmohqqtx.html