面向对象的JavaScript

JavaScript没有提供传统面向对象语言中的类式继承,而是通过原型委托的方式来实现对象与对象之间的继承。

1.1动态类型语言与鸭子类型

编程语言按照数据类型大体可以分为两类:静态类型语言动态类型语言。JavaScript是一门动态类型语言,在变量赋值时,不需要考虑它的类型。

静态类型的优点:在编译时就能发现类型不匹配问题;规定了数据类型可以提高编译器程序执行速度。
静态类型的缺点:迫使程序员依照强契约来编写程序,为每个变量规定数据类型。

动态类型的优点:编写的代码量更少、更简洁;
动态类型的缺点:无法保证变量的类型,在程序运行时可能发生类型相关错误。

var duck = {
	duckSinging: function(){
		console.log('嘎嘎嘎');
	}
}
var chicken = {
	duckSinging: function(){
		console.log('嘎嘎嘎');
	}
}

var choir = [];
var joinChoir = function(animal){
	if(animal && typeof animal.duckSinging === 'function'){
		choir.push(animal);
		console.log('恭喜加入鸭子合唱团');
	}
}

joinChoir(duck);  //恭喜加入鸭子合唱团
joinChoir(chicken); //恭喜加入鸭子合唱团

chicken对象中含有duckSinging ,并且duckSinging是一个函数。完全具备鸭子发出叫声的条件。
符合动态类型的面向对象设计中的一个原则:面向接口编程、而不是面向程序编程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值