JS中Function有个name属性。现在我debug版本获取某个函数的名称,比如
this.xxx.name获得的是xxx
但是如果发行release版本,这个值就是一个空。
难道creator做了优化,把这个name属性都优化掉了吗。
是啊,为了减小包体
我现在有一个类做事件映射的。就是添加一个函数和他的上下问候后,我获取这个类名,然后适当的时候做调用。因为不能重复添加,我现在重复添加的时候,就用函数名作判断。现在如果没有name,没有版本做函数的比较了。导致debug下正常,release下异常。
有没有什么方法去比较函数是一样的。以前都是用Function的name比较的。现在突然没有了。看属性,没有合适的方法。
toString()也不靠谱。
直接 foo1 === foo2 就行啦
JS 的函数名是靠不住的,一般不会有人拿来做判断。你应该是添加的时候用 funcs.indexOf(newFunc) !== -1 来判断是否有重复。
OK.可能开始我引入了上下文,所以想直接通过name去执行这个对象的函数。
直接比较也可以。