簡體   English   中英

為什么我不能為屬於我的作用域的函數創建方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM