我有两个类和一个全局函数。在全局函数中,我想确定哪个类调用它。这是CofffeeScript中的代码

window.pet = ()->
  alert "I was called #{by}"

class Cat
  constructor: (@name) ->
    pet()

class Dog
  constructor: (@name) ->
    pet()


这可能吗?

最佳答案

简短的回答:不。

这个问题可能会重复出现。但我想指出的是,如果您需要采取这种技巧来解决问题,则可能会使用类似的技巧来引入另一个问题。如果函数的行为需要依赖于某种东西(例如从何处调用),则使其明确,并使用参数表示该依赖关系;这是每个人都容易理解的模式。

pet = (pet) ->
  alert "I was called by #{pet.name} the #{pet.constructor.name}"

class Cat
  constructor: (@name) ->
    pet @

new Cat 'Felix' # Output: "I was called by Felix the Cat"


就是说,Function#name is not standard,所以您可能也不应该使用它。但是,您可以通过访问宠物的“ constructor”属性来安全地访问宠物的“类”(即其构造函数),如示例所示。

关于javascript - 查找在CoffeeScript中调用函数调用的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16883327/

10-11 05:41