关于在循环函数中设置本地属性的错误(Firefox和Safari)

An Error about setting Local Property in Function with loop (Firefox and Safari)

本文关键字:错误 Firefox Safari 属性 循环 函数 设置      更新时间:2023-09-26

我遇到了一个关于下面代码的问题,我试图用循环设置localproperties:

function aa(b,c,d){
    var args=arguments.callee.toString().match(/function.*'((.*)')/)[1].split(",");
    for(var key=0;key<arguments.callee.length;key++){
        this[args[key]]=arguments[key];
    }           
    alert("this.b="+this.b+",this.c="+this.c+",this.d="+this.d);
};
var xxx=new aa(11,22,33);

事情是:我得到三个值正确的IE,Chrome和Opera;但是在Firefox和Safari中,我只能得到第一个(这个)。B =11,在这种情况下),而其他两个未定义。有人能告诉我原因和如何解决它吗?呢。

第二行试试.split(/, */)

Function.prototype.toString在某些发动机中的漂亮打印:

js> ''+ function aa(a,b,c){}
"function aa(a, b, c) {'n}"