簡體   English   中英

訪問另一個JavaScript文件中的對象

[英]Accessing object in another javascript file

我有兩個JS文件

創建媒體的Player.js

(function() {

function Media(){
        this.url = "";
}

Media.prototype.setURL = function(url){
    this.url = url;
    alert("setURL="+this.url);
}

})();

另一個文件是Main.js,可以在其中訪問該媒體,如下所示

var media = new Media();
Main.keyDown = function(){
    var keyCode = event.keyCode;
    alert("Key pressed: " + keyCode);

    switch(keyCode){
       case tvKey.KEY_1:
            alert("Key 1 pressed");
            media.setURL("1-link");
            break;
    }
};

我有一個index.html,其中包含了這些腳本

<script language="javascript" type="text/javascript" src="app/javascript/dash-player.js"></script>
<script language="javascript" type="text/javascript" src="app/javascript/Main.js"></script> 

問題是,從Main.js訪問此媒體時出現錯誤,如下所示

[JS ERROR]:
File:           Main.js
Line No:        3
Error Detail:   ReferenceError: Can't find variable: Media

我已經嘗試了各種方法,但是由於我是Java語言的新手,所以到目前為止無法解決此問題

Media僅在Player.js的Player.js內部定義。 刪除(function() { ... })(); 包裝紙。

嘗試:

var Media = (function() {

function Media(){
        this.url = "";
}

Media.prototype.setURL = function(url){
    this.url = url;
    alert("setURL="+this.url);
}

return Media;

})();

然后,您將保留Media原型的分隔名稱空間,但是您可以從ouside訪問Media對象以實例化它。 我沒有測試此代碼,但在實現模塊或插件時曾經這樣做。


也許對(function(){})()語法有一些解釋:

  • 第一個(表示您創建了一個名稱空間:內部設置的所有變量都不會在外部存在。相反,外部變量可以訪問。
  • 函數function(){}是您的函數代碼。 您會注意到,它返回您剛創建的“媒體”對象。
  • )表示您關閉名稱空間。
  • 而last ()表示您執行前面的代碼(又名命名空間代碼(function(){}) 。由於此代碼返回Media對象,因此您可以將其保存到可從外部訪問的變量(又名var Media =一開始)。

希望足夠清楚...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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