JavaScript 进阶(一)——面向对象编程与原型模式

本博客学习书籍:《JavaScript设计模式与开发实践》
本博客学习章节:第一章

面向对象编程与原型模式

动态类型语言

编程语言按照是否定义数据类型大体可以分为两类,一类是静态类型语言,另一类是动态类型语言。JavaScript就是一种动态类型语言,定义到调用都不用管变量的类型。

// 定义a时不需要管它的类型
// 在 F12-Console 台,依次输入下面每行的代码,都是OK的
var a;
a = 1;
a += '-aaa'
a = [1,2,3]
a = new Date()
  1. 静态类型语言在编译时便已确定变量的类型,否则的话VScode或webstorm这些编译器就会提示错误。比如:java,C语言系列,php。
  2. 动态类型语言的变量类型要到程序运行的时候,待变量被赋予某个值之后,才会具有某种类型。比如:python,JavaScript。
  3. 另外, js + TypeScript也是要写代码时就要声明数据类型

鸭子类型

什么是鸭子类型呢?就是“如果它走起路来想鸭子,叫起来也是嘎嘎嘎,那么它就是鸭子”。如下图:
只要这狗子会喵喵喵,还要啥自行车
我们这里,关注的是对象的行为,行为一致就可以看做同一类型,所以就可以写出如下代码:

// 如果你会喵喵喵,我就当你是个猫,你就可以排队吃小鱼干了
var hashiqi = {
   
	say:function(){
   
		console.log('喵~喵~');
	}
}
var daju = {
   
	say:function(){
   
		console.log('喵~喵~');
	}
}
var kaifanla = [];
var joinKaifan = function(animal){
   
	if(animal && typeof animal.say === 'function'){
   
		kaifanla.push(animal);
		console.log('猫猫排队了!今日份一袋小鱼干~');
	}
}
joinKaifan(hashiqi);
joinKaifan(daju);

多态

多态的含义是:给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈。

在 JavaScript 这种将函数作为一等对象的语言中,函数本身也是对象,函数用来封装行为并且能够被

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值