【问题标题】:Correct way to refer to class/instance rather than object literal property?引用类/实例而不是对象文字属性的正确方法?
【发布时间】:2011-07-01 05:21:16
【问题描述】:

我有一个对象'foo',它有一个对象字面量作为属性,如下所示。在该属性中,我想引用对象“foo”而不是对象字面量本身。

这只能通过 hacks 来完成,即通过变量名引用对象吗?还是有更好的办法?

以下示例 - 成功时应打印“woo”。

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

window.foo = new Foo

foo.testthing.bop()

【问题讨论】:

    标签: javascript scope coffeescript


    【解决方案1】:
    class Foo
      constructor: ->
        @testthing =
          'foo':'bar'
          'baz':'boo'
          'bop': => @myfunc()
      myfunc: =>
        console.log('woo')
    

    像这样在构造函数中声明testthing 允许@myfunc 绑定到“实例”而不是“类”。

    您也可以使用'bop': @myfunc 而不是'bop': => @myfunc() 来传递任何参数:)

    【讨论】:

    • 就在鼻子上。澄清一下:在类主体中,@ 指向Foo。在构造函数中,它指向正在创建的Foo 实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2014-12-07
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多