Правильный способ ссылаться на класс / экземпляр, а не на свойство литерала объекта? - PullRequest
1 голос
/ 01 июля 2011

У меня есть объект 'foo' с литералом объекта в качестве свойства, как показано ниже. Внутри этого свойства я бы хотел сослаться на объект 'foo', а не на сам литерал объекта.

Можно ли это сделать только с помощью хаков, т. Е. Ссылки на объект по имени его переменной? Или есть лучший способ?

Пример ниже - должен вывести «woo» в случае успеха.

class Foo
  myfunc: =>
    console.log('woo')
  testthing: {
    'foo':'bar'
    'baz':'boo'
    'bop': =>
      @myfunc()
  }

window.foo = new Foo

foo.testthing.bop()

1 Ответ

3 голосов
/ 01 июля 2011
class Foo
  constructor: ->
    @testthing =
      'foo':'bar'
      'baz':'boo'
      'bop': => @myfunc()
  myfunc: =>
    console.log('woo')

Объявление testthing в конструкторе таким образом позволяет @myfunc быть привязанным к «экземпляру», а не к «классу».

Вы также можете использовать 'bop': @myfunc вместо 'bop': => @myfunc() для передачи любых аргументов:)

...