0

私は JavaScript 開発者です。クライアント/サーバー開発にはYUI3を使用しています。coffeescript を試してみたいのですが、問題があります。YUI で POO を行うには、次の構造を使用する必要があります。

MyClass = function(){
    MyClass.superclass.constructor.apply(this, arguments);
};

MyClass.prototype = {
    initializer: function (arguments) {

    },
    otherFunction: (){}
}

http://yuilibrary.com/yui/docs/base/

引数の名前を変更できないため、コンパイラの coffescript から次のように送信されます。

エラー: パラメータ名 "引数" は許可されていません イニシャライザ: (引数) ->

編集 :

「引数」なしで

MyClass = function(args) {
  return MyClass.superclass.constructor.apply(this, args);
};
MyClass.prototype = {
  initializer: function(args) {

  }
}
4

1 に答える 1

3

Javascript で引数名として「引数」を使用することは、可能であったとしても悪い考えです。(そうではないことを願っています) "arguments" は、囲まれた関数で指定されたすべての引数を含む配列のようなオブジェクトを常に "返す/含む/表す" "キーワードのようなもの" です。

例:

function foo() {
  console.log(arguments);
}

foo("a", "b"); // prints something like {0: "a", 1: "b"}

さらに、apply() メソッドは、関数を呼び出すための引数の配列 (または配列のようなオブジェクト) を受け取ります。

function bar(a, b) {
  console.log([a, b]);
}

bar.apply(this, [1, 2]);  // prints something like [1, 2]

したがって、arguments-object を .apply に渡して、囲んでいる関数が呼び出されるのと同じ引数でメソッドを呼び出すことができます。

つまり、イニシャライザで「arguments」引数を省略したいだけかもしれません。イニシャライザが呼び出されると、すでにそこにあります。

initializer: function () {
  console.log(arguments); // no error, i'm here for you
},
于 2013-06-17T08:24:44.180 に答える