Вот как вы делаете это в CoffeeScript:
class Test
constructor: (id) -> alert(id)
class TestChild extends Test
instance = new TestChild('hi')
Нет, я не начинаю священную войну. Вместо этого я предлагаю взглянуть на полученный код JavaScript, чтобы увидеть, как можно реализовать подклассы:
// Function that does subclassing
var __extends = function(child, parent) {
for (var key in parent) {
if (Object.prototype.hasOwnProperty.call(parent, key)) {
child[key] = parent[key];
}
}
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
child.prototype = new ctor;
child.__super__ = parent.prototype;
return child;
};
// Our code
var Test, TestChild, instance;
Test = function(id) { alert(id); };
TestChild = function() {
TestChild.__super__.constructor.apply(this, arguments);
}; __extends(TestChild, Test);
instance = new TestChild('hi');
// And we get an alert
См. Это в действии на http://jsfiddle.net/NGLMW/3/.
Чтобы остаться верным, код немного изменен и прокомментирован, чтобы быть более читабельным по сравнению с выводом CoffeeScript.