Instance properties
Opened this issue · 1 comments
DawidMyslak commented
According to the book (https://arcturo.github.io/library/coffeescript/03_classes.html) instance properties can be created in the following way:
class Animal
price: 5 # instance property according to the book
sell: (customer) ->
animal = new Animal
animal.sell(new Customer)
But when I checked generated JavaScript code it looks like price
property was added to the prototype 😕...
Well, if you try to use it I guess in that case it will magically work because the number type in JavaScript is immutable, but let me just show you an example with mutable field:
class Store
products: [] # instance property?
addProduct: (name) ->
@products.push(name)
foodStore = new Store
foodStore.addProduct 'milk'
motoStore = new Store
motoStore.addProduct 'tyre'
console.log motoStore.products # ['milk', 'tyre'], boom
So obviously products
property was added to the prototype and it's shared by both instances.
DawidMyslak commented
Oh, I've just noticed the same issue was already raised here: #80