js 面向对象(三) 原型风格与对象关联风格

总是追求用类似C++或者java的方法去创造对象当然可以,这是一种风格。但还有个人觉得更适用与js这种对象比较多的语言的一种对象创建的风格,有些书里也称之为行为委托

即创造一个对象,其他对象使用这个对象的行为的同时,具备自己独特的行为(怎么有点像寄生式继承2333)

两种风格实现同一种功能代码量对比:

//原型风格与对象关联风格
// function Foo(who){
// this.me=who;
// }
// Foo.prototype.identyyify = function() {
// return "i'm "+this.me;
// }
// function Bar(who){
// Foo.call(this,who);
// }
// Bar.prototype=Object.create(Foo.prototype);
// Bar.prototype.speak = function(){
// console.log("hello, "+this.identify()+".");
// };
// var b1=new Bar("b1");
// var b2=new Bar("b2");
// b1.speak();
// b2.speak();
/
Foo={
init : function( who){
this. me = who;
},
identify : function(){
return "I am "+ this. me;
}
};
Bar = Object. create( Foo);
Bar. speak = function(){
console. log( "hello, "+ this. identify()+ ".");
};
var b1= Object. create( Bar);
b1. init( "b1");
var b2= Object. create( Bar);
b2. init( "b2");
b1. speak();
b2. speak();


可见对象关联风格要简洁不少,逻辑关系也简单许多,但适用情况就相对少一些,感觉适用于同一个空间里有一些固定的资源,不同的对象可以用不同的方法去调用这些资源(多。。。多态?)

希望学多了可以回来审视下自己的理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值