function foo(name){
this.name = name;
}
foo.prototype.bar = function(){
console.log('Status is fubar!');
}
o = new foo('John');
o.bar();
That's a bit more of characters to type. If you take a look at how CoffeeScript does it:
foo = (@name) -> # the @name is same as writing this.name = name
foo::bar = -> # the '::' is the prototype keyword
console.log 'Status is fubar'
o = new foo('John')
console.log o.name
o.bar()
But all this prototype business can be moved into a more object-oriented style using CoffeeScript's class constructs.
class Fish
constructor: (@name) -> # gets transformed into a simple JavaScript constructor
swim: (direction) -> console.log @name + 'is swimming ' + direction # prototype; notice the @name which is this.name
# and the direction is a function parameter
fish = new Fish('Nemo') # play around with fish object
console.log fish.name
fish.swim('north')
I sort of subscribe to shorter code is cleaner code. That's why I'm liking CoffeeScript so far.
No comments:
Post a Comment