我有两个类和一个全局函数。在全局函数中,我想确定哪个类调用它。这是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/