你如何使用hasOwnProperty?

Ric*_*tta 2 javascript class coffeescript

任何人都能解释一下hasOwnProperty在空对象上调用了什么吗?为什么要用它?

__hasProp = {}.hasOwnProperty
Run Code Online (Sandbox Code Playgroud)

当我开始用coffescript开发时,我发现了这一点.Ty

Fel*_*ing 9

hasOwnProperty不是叫.函数名后没有括号.

__hasProp[MDN]参考,因为Object.prototype.hasOwnProperty

__hasProp = {}.hasOwnProperty
Run Code Online (Sandbox Code Playgroud)

是一个较短的版本

__hasProp = Object.prototype.hasOwnProperty
Run Code Online (Sandbox Code Playgroud)

__hasProp现在打电话,例如在

__hasProp.call(someObject, 'foo')
Run Code Online (Sandbox Code Playgroud)

比它更短更容易阅读

Object.prototype.hasOwnProperty.call(someObject, 'foo')
Run Code Online (Sandbox Code Playgroud)

当我开始开发coffescript时,我创立了.

所以我假设这一行是自动生成的,你可能想知道为什么创建一个快捷方式,如果没有人真的必须编写代码?

将此函数分配给变量可以避免必须查找Object,Object.prototype并且Object.prototype.hasOwnProperty每次都要使用它.__hasProp只是一次查找,而不是三次查找,并且在经常使用时可能会导致轻微的性能提升.