我见过许多不同的方法来检查javascript中可用的属性或方法。
if(typeof window.somePropOrMethod !== "undefined"){ }
if(window.hasOwnProperty("somePropOrMethod")){ }
if("somePropOrMethod" in window){ }
if(!!window.somePropOrMethod) { }我应该使用哪一个,为什么?这完全取决于个人喜好,还是它们之间存在细微的差异?
发布于 2012-09-04 19:08:32
if(typeof window.somePropOrMethod !== "undefined"){ }检查somePropOrMethod是否是window的属性,并且它的值不是undefined。
直接在对象上以及在其原型链中检查
if(window.hasOwnProperty("somePropOrMethod")){ } 检查somePropOrMethod是否显式存在于对象本身(window)上,而不管它的值如何(与#1不同)
仅在对象上直接检查
if("somePropOrMethod" in window){ } 检查是否可以在对象本身或其原型链上找到somePropOrMethod,而不管它的值如何(与#1不同)
直接在对象上以及在其原型链中检查
if(!!window.somePropOrMethod) { } 这里发生的事情是获取somePropOrMethod的值并将其转换为布尔值。如果somePropOrMethod为undefined或任何其他False值,则结果始终为false,否则为true
直接在对象上以及在其原型链中检查
https://stackoverflow.com/questions/12262058
复制相似问题