我是 JavaScript 新手,对鸭子类型的概念有点困惑。据我所知,我理解了这个概念。但这在我的想法中导致了一个奇怪的结果。我将通过以下示例进行解释:
我目前正在使用 jQuery Mobile 开发移动网络应用程序。有一次,我vmousedown
为画布捕获了事件。我对触摸的压力感兴趣。我找到了Touch.webkitForce
房产。
$('#canvas').live('vmousedown', function(e){
console.log(e.originalEvent.originalEvent.touches[0].webkitForce);
}
这在使用Chrome的远程调试时工作正常。但是在Opera Firefly中测试的时候会抛出异常,因为该originalEvent
属性不是触摸事件,而是点击事件。
所以每次我访问一个不在我权限下的对象的属性时,我是否必须检查存在和类型?
if( e.originalEvent &&
e.originalEvent.originalEvent &&
e.originalEvent.originalEvent.touches &&
e.originalEvent.originalEvent.touches[0] &&
e.originalEvent.originalEvent.touches[0].webkitForce) {
console.log(e.originalEvent.originalEvent.touches[0].webkitForce);
}
请有人为我澄清一下吗?