我是JavaScript新手,與鴨打字概念有點混淆。據我所知,我理解了這個概念。但是這在我的思想中導致了一個奇怪的後果。我將用以下示例來解釋:檢查JavaScript中是否存在屬性
我目前正在使用jQuery Mobile開發移動Web應用程序。有一次,我捕獲了一個畫布的vmousedown
事件。我對觸摸的壓力感興趣。我發現了Touch.webkitForce
屬性。
$('#canvas').live('vmousedown', function(e){
console.log(e.originalEvent.originalEvent.touches[0].webkitForce);
}
對於Chrome使用Remote Debugging時,此工作正常。但在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.Hannes然後你需要使用'try,catch'作爲[at] Prodigy的答案:http://stackoverflow.com/a/13248964/887539 – andlrc