[英]whats wrong with this JS?
有任何有趣的文章警告JS問題。
但是,請注意#2:
<input type="button" value="Gotcha!" id="MyButton" >
<script>
var MyObject = function () {
this.alertMessage = "Javascript rules";
this.ClickHandler = function() {
alert(this.alertMessage );
}
}();
</script>
最后請注意()
的自我執行功能。 但是我很確定在做new MyObject()
時會使用this.xxx
。 他寫了 :
如果調用
MyObject.ClickHandler();
您將看到一個彈出窗口,顯示“ Javascript規則”。
而且他的樣本無效。 我嘗試了MyObject.ClickHandler()
並收到一個錯誤...(無法調用未定義的方法'ClickHandler')
如何使MyObject.ClickHandler()
工作?
您缺少new
關鍵字。 當前, this
是指window
並且可以通過window.ClickHandler
獲得ClickHandler
。
使用new
關鍵字時,將創建一個新對象,並且this
關鍵字將引用該新創建的對象。 這就是將ClickHandler
方法添加到以下MyObject
:
var MyObject = new (function () {
this.alertMessage = "Javascript rules";
this.ClickHandler = function () {
alert(this.alertMessage);
};
})();
進行以下操作時要小心:
document.getElementById("MyButton")
.addEventListener("click", MyObject.ClickHandler, false);
addEventListener
使得this
指在其上被分配的事件偵聽器的對象。 另請參見bind
以更改this
范圍。
編輯: Zoiks,Lekensteyn撞在了頭上。 我不完全了解您打算在這里完成的工作...
那不完全是“自我執行功能”。 如果您是這樣構建的:
(function(MyObject) {
MyObject.alertMessage = "Javascript rules";
MyObject.ClickHandler = function() {
alert(this.alertMessage );
}
})(window.MyObject = window.MyObject || {});
然后,我將其稱為自執行功能。
完成此操作后,現在可以執行MyObject.ClickHandler()
並獲取警報。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.