binding values while looping in constructor CoffeeScript

I have decided to use CoffeeScript and i have been trying to convert Node.js module of mine to CoffeeScript. So, here is the code in JS:

function Domain(obj){
    var self = this;
    for (var key in obj){
        this[key] = obj[key]; //merge values
    }
}

Domain.prototype.save = function(fn){

}

And my attempt to have the same in the CoffeeScript as following:

class Domain
  consructor: (obj) ->
    for own key, value of obj
      @key = value

  save: (fn) ->

module.exports  = Domain

The following test fails:

require('coffee-script');
var should = require('should')
    , Domain = require('../index');

should.exist(Domain);

var domain = new Domain({'attOne':1, 'attTwo':2});

domain.should.have.property('save');
domain.should.have.property('attOne');
domain.should.have.property('attTwo');

domain.save.should.be.an.instanceof(Function);

console.log('All tests passed');

The property 'attrOne' and 'attrTwo' is not binding to the Domain class. I have compiled the coffee code by 'coffee -c index.coffee' to see the js code:

(function() {
  var Domain,
    __hasProp = {}.hasOwnProperty;

  Domain = (function() {
    function Domain() {}

    Domain.prototype.consructor = function(obj) {
      var key, value, _results;

      _results = [];
      for (key in obj) {
        if (!__hasProp.call(obj, key)) continue;
        value = obj[key];
        _results.push(this.key = value);
      }
      return _results;
    };

    Domain.prototype.save = function(fn) {};

    return Domain;

  })();

  module.exports = Domain;

}).call(this);

From the compiled js, i see the '_result' array being generated and returned but never binded to 'this'. How would i bind the array into the class scope to pass the test?Thank You

Your line of CoffeeScript

@key = value

is not equivalent to the javascript you want

this[key] = obj[key];

The way @ works is that it is simply replaced by either this or this.. Thus, @key compiles to this.key. You should instead use

@[key] = value

Additionally, you spelled constructor wrong (as consructor). In CoffeeScript, constructor is a special method that compiles differently from a normal method; if it is spelled wrong, CoffeeScript assumes you want an empty one.

consructor: (obj) ->

Domain.prototype.consructor 

You are missing a t.

(I keep saying that)