Ошибка установки локального свойства в функции с помощью цикла (Firefox и Safari) - PullRequest
0 голосов
/ 19 декабря 2011

у меня возникла проблема с кодом ниже, который я пытался установить 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 я мог получить только первое (this.b = 11, в данном случае), тогда как два других не определены. Кто-нибудь может сказать мне причину и как это исправить? Thks.

1 Ответ

1 голос
/ 20 декабря 2011

Попробуйте .split(/, */) во второй строке.

Function.prototype.toString красивые отпечатки на некоторых двигателях:

js> ''+ function aa(a,b,c){}
"function aa(a, b, c) {\n}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...