2011-05-23 72 views
4

我正在使用以下格式來避免可能的命名衝突。 我的主要目標是保持在開發過程中不同的文件程序的部分,再後來結合起來 Editor是JavaScript中的名稱空間實現

main.js

Editor=function(){ 
    this.manage=function(){ 

    } 

} 
var editor= new Editor; 

a.js

Editor.prototype.A=function(){ 
     this.afunct=function(){ 

     } 
} 

b.js

Editor.prototype.B=function(){ 
     var this.var1; 
     var this.var2; 
     this.bfunct=function(){ 
      //call afunct() here 
     } 
} 

A是一組函數tha t做一些測試,修改等。 afunct是一個需要在所有其他文件中使用的測試函數。 B被認爲是一個數據包,它的新實例將被創建以傳遞。

我該怎麼稱呼bfunct內部不合適? 請幫我理解我該如何做到這一點。先謝謝你。

PS。我是一個Javascript的新手,請原諒我的邏輯中的任何缺陷。

回答

1

它的晦澀難懂,但這可能做到這一點:

(function() { 

    var Editor = function() { 

    }; 

    Editor.prototype = { 
     A: { 
      afunct: function() { 
       // Other functionality here. 
      } 
     }, 
     B: { 
      bfunct: function() { 
       Editor.prototype.A.afunct.call(this); 
      } 
     } 
    }; 

    window.Editor = Editor; 

})(); 


var editor = new Editor(); 

editor.B.bfunct(); 
+0

其中是命名空間嗎? – Neal 2011-05-23 15:42:33

+0

對不起,我沒有關注你... – Eli 2011-05-23 15:43:09

+0

namespace。你在哪裏做'variable = new something;等等等等。' – Neal 2011-05-23 15:44:05

0

從內部B這應該工作

Editor.A.apply(this) 
+0

什麼是應用() ? – 2011-05-24 03:20:00

+0

使用給定的值調用函數 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply – sym3tri 2011-05-24 06:47:14

0

從內Editor.prototype.B試試這個:

Editor.prototype.B=function(){ 
     var this.var1; 
     var this.var2; 
     var self = this; 
     this.bfunct=function(){ 
      //call afunct() here 
      self.prototype.B.afunct(); 
     } 
} 
相關問題