Skip to content

Instance properties #82

@DawidMyslak

Description

@DawidMyslak

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions