在JavaScript中,this
的值根據函數是如何調用。基本上有三種調用模式:
- 使用新的運營商,例如,
new Foo()
。在這種情況下,Foo
正在執行this
引用正在創建的新對象。
- 在對象上解引用方法例如
foo.bar()
。在這種情況下,bar
正在執行this
是指foo
。當一個方法沒有從另一個對象中解除引用時,例如當調用一個全局方法時,this
引用全局範圍或全局對象。
- 使用適用或請致電例如
foo.apply(bar)
。通過使用請致電或應用您可以告訴解釋器在調用過程中應該引用哪些內容this
。
- 作爲一個有點特殊的例子,
this
引用事件處理程序的節點。
在你的情況,如果你有一個名爲selected
是從事件處理程序調用的全局函數,如下列:
<li onclick="selected()">
的
selected
調用期間
然後,因爲它沒有從解除引用任何地方this
都會引用全局對象。如果您希望this
指向其事件處理程序正在觸發的對象,則需要使用call
或apply
模式調用selected
,並將值this
(將引用該節點)作爲上下文參數。
<li onclick="selected.call(this)">
我通常會盡量回避使用通話或遠適用,因爲它不是從看什麼this
將引用功能明顯。因此,在這種情況下,我會建議傳入節點作爲參數。
<script>
...
function selected(node) {
node.title = node.getAttribute('title');
}
</script>
...
<li onclick="selected(this)">
有了這一切都這樣說,你selected
功能的實現不會使一噸的意義,因爲它本質上是一個無操作(在許多情況下)。
如何分配onclick? –
通過將onlick屬性添加到li來分配。 – comu
@Jonah Aliborne ...看看我的答案,它應該可以幫助你。 –