![](/img/trans.png)
[英]Why can't I create a method equal to a global function within this object literal? (javascript)
[英]Why can't I create a method to the function who's scope I'm within?
我試圖創建一個綁定到全局名稱空間的對象,然后在該對象中創建引用自身的方法。 我希望在創建對象並定義obj
時創建所有方法,但該方法不是(基於底部的控制台輸出)。 確實return this;
不將方法本身返回給調用? 還是我正在調用this.methd
的問題在obj函數內部不正確? 事先對不起,如果是重復的話,似乎類似的問題似乎不是我的全部,親密但沒有雪茄。
(function(window, undefined){
var obj = function(){
this.methd = function() {
return this;
};
}
window.obj = obj;
})(window);
function defined(value) {
var def = value ? 'pass' : 'fail';
return def;
}
console.log(defined(obj))
console.log(defined(obj.methd))
//Output:
//pass
//fail
您正在將window.obj
設置為對函數的引用。 在該函數運行之前, methd
不會在任何地方定義,無論該函數的內容或它返回什么。
如果您將其作為構造函數調用以創建實例,則methd
將被定義,但僅在該特定實例上 :
var b = new obj();
console.log(defined(b.methd)); //pass
備選地,只是調用函數作為一個正常的功能將使用的電流值this
(這是全局對象,或window
),並創建所述methd
在該對象上的功能:
obj();
console.log(defined(window.methd)); //pass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.