在尝试了 js 的原型继承之后,我发现我并不热衷于在对象之外声明对象的方法:
function obj(){
this.averyday='i\'m shuffle\'n';
this.gibmo='dinero';
this.pullOut='that\'s what she said lol';
}
obj.prototype.alertProp=function(){
alert(this.averyday);
}
obj.prototype.alertProp2=function(){
alert(this.gibmo);
}
所以我想出了一种方法来将我的方法组织到一个命名空间中
obj.prototype.m={
//i'm passing in the object instance so the mathods can have access to it's properties
alertProp:function(that){
alert(that.theObj.everyday);
},
alertProp2:function(that){
alert(that.myObj.gibmo+' '+that.myObj.someVal); // alerts "dinero some other value to be use "
}
}
var myobj = new obj;
然后使用我只需调用方法并传入对象实例(如果方法需要修改对象的属性)
myobj.m.alertProp({theObj:myobj,someVal:'some other value to be use'}) //alerts "i'm shuffle'n"
所以这里有一些我注意到的优点:
优点:
1) 将方法组织到一个集中区域。
2) 只访问一次对象的“原型”(实际上使用更少的代码)。
3)似乎更具可读性(至少对我来说)。
缺点:...这是我需要你们帮助的地方,有人认为这样做有什么问题吗?我概述的专业人士有任何性能问题或任何问题等......?
还有人看到我可能没有看到或不明显的任何其他优点吗?