注册 登录
编程论坛 JavaScript论坛

假如js支持默认方法

chaoslee 发布于 2011-02-27 00:14, 390 次点击
其实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 编辑 ]
2 回复
#2
gupiao1752011-02-27 14:44
发这个什么意思,没看懂!看来我落伍了!
#3
foktime2011-02-28 09:22
回复 2楼 gupiao175
语法糖
1