假如js支持默认方法
其实ff已经实现了这个默认方法,名称为__noSuchMethod__,winter大婶在2008年就说过。如果标准中普及了这么一个默认方法,我们一定会进行各种尝试,比如:(以下代码使用ff运行)
程序代码:
var obj = { __noSuchMethod__ : function(name,args){ //obj的方法循环调用 var funName = name.replace(/\d/g,''); if(typeof this[funName] === 'function'){ for(var i=0,len=parseInt(name.match(/\d+/)[0]) || 0;i<len;i++){ this[funName].apply(this,args); } } //obj的只读属性getter var r_fields = { only_r : 'cciscc' }; var fieldName = name.replace(/^get_/,''); if(name.substring(0,4) === 'get_' && fieldName in r_fields){ return r_fields[fieldName]; } } ,greet: function(msg){ console.log(msg); } ,cc:function(msg){ console.log('cc:'+msg) } }; for(var i in obj){ obj[i] = (function(fn){ return function(){ return fn.apply(this,arguments) || this; }; })(obj[i]); } alert(obj.cc5('hi').greet('hi').greet2('hello').get_only_r());
http://
[ 本帖最后由 chaoslee 于 2011-2-27 18:02 编辑 ]