這個原型函數有可能返回false,還是一個總是返回true的無意義檢查?在原型函數中,'this'可能是未定義的嗎?
if (!Date.prototype.hasOwnProperty("foo")) {
Date.prototype.foo = function() {
var date = this;
if (!date) {
return false;
}
return true;
}
}
這個原型函數有可能返回false,還是一個總是返回true的無意義檢查?在原型函數中,'this'可能是未定義的嗎?
if (!Date.prototype.hasOwnProperty("foo")) {
Date.prototype.foo = function() {
var date = this;
if (!date) {
return false;
}
return true;
}
}
如果啓用strict mode JavaScript中的this
關鍵字只有undefined
。否則,它就參照默認window
對象,除非以下任何爲真:
new
操作者this
使用call()
或apply()
+1:文檔鏈接[call](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Global_Objects /功能/呼叫)/ [應用](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects %2FFunction%2Fapply)「:如果方法是非嚴格模式代碼中的函數,則null和undefined將被全局對象替換。 –
因此,如果我處於嚴格模式下,並且調用'Date.prototype.foo.call(undefined)'或'.apply(undefined)',那麼這可能發生的唯一方法是? – joshschreuder
你期望'this'是Date對象還是隻是檢查函數是否得到某種'this'? (你可以將'window'看作'this'非常簡單...) –
有條件地分配一個原型(儘管可能)可能會很複雜。你絕對相信你需要有條件地分配一個這樣的原型嗎? – Sukima
這只是我正在看的一個原型的頂部的一段代碼...只是想知道我是否可以刪除它,因爲我想不出它會被擊中的方式。有沒有'this'這個方法不能成爲調用變量,例如。爲'var date = new Date(); date.foo();'? – joshschreuder