我是JavaScript的新手,对于鸭子类型概念有些困惑。就我所知,我已经理解了这个概念。但这导致了我的思考中出现了奇怪的后果。我将通过以下示例进行解释:
我目前正在使用jQuery Mobile开发移动Web应用程序。在某一点上,我捕获了画布的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);
}
请问有人能为我澄清一下吗?
object.property
表示法? - Angelo.Hannestry, catch
: https://dev59.com/7WrWa4cB1Zd3GeqP_oGz#13248964 - Andreas Louv