任何人都能解释一下hasOwnProperty在空对象上调用了什么吗?为何使用它?
__hasProp = {}.hasOwnProperty
当我开始使用coffescript时,我发现了这一点.Ty
答案 0 :(得分:9)
hasOwnProperty
不被调用。函数名后面没有括号。
__hasProp
是Object.prototype.hasOwnProperty
[MDN]的参考,因为
__hasProp = {}.hasOwnProperty
是
的缩短版__hasProp = Object.prototype.hasOwnProperty
现在调用__hasProp
,例如在
__hasProp.call(someObject, 'foo')
比
更短更容易阅读Object.prototype.hasOwnProperty.call(someObject, 'foo')
当我开始开发coffescript时,我成立了。
所以我假设这一行是自动生成的,如果没有人真正编写代码,你可能想知道为什么要创建一个快捷方式?
将此功能分配给变量可避免每次要使用时都必须查找Object
,Object.prototype
和Object.prototype.hasOwnProperty
。 __hasProp
只是一次查找,而不是三次,并且在经常使用时可能会导致性能略有提升。