2013-06-17 2 views
0

Я разработчик JavaScript. Я использую YUI3 для разработки client/serveur. Я хочу попробовать coffeescript, но у меня проблема. Чтобы сделать мочиться с YUI, я должен использовать эту структуру:имя параметра «аргументы» параметра «CoffeeScript» не разрешено

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

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

    }, 
    otherFunction:(){} 
} 

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

Я не могу переименовать аргументы так составитель coffescript отправить мне:

 
error: parameter name "arguments" is not allowed                                           initializer: (arguments) -> 

Edit:

Без "аргументов"

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

    } 
} 

ответ

3

Наличие «аргументов» в качестве имени аргумента в Javascript - плохая идея, если бы это было возможно. (бог, я надеюсь, что нет) «аргументы». Это «ключевое слово-как-thingy», которое всегда «возвращает/содержит/представляет» объект, похожий на массив, содержащий все аргументы, заданные в функции, которую он заключает.

Пример:

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

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

Кроме того, применить() метод получает массив (или массив-подобный объект) аргументов для вызова функции с.

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

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

Таким образом, вы можете передать аргументы-объект .Не для вызова метода с теми же аргументами, функция вшита называется.

Другими словами, вы можете просто опустить аргумент аргументов в свой инициализатор. Он уже существует, когда вы вызываете ваш инициализатор.

initializer: function() { 
    console.log(arguments); // no error, i'm here for you 
}, 
+0

ОК, я не знаю все это. Так что спасибо :) Это работает! Без «аргументов» – Shenron

Смежные вопросы