[英]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(){}
是您的函數代碼。 您會注意到,它返回您剛創建的“媒體”對象。 )
表示您關閉名稱空間。 ()
表示您執行前面的代碼(又名命名空間代碼(function(){})
。由於此代碼返回Media對象,因此您可以將其保存到可從外部訪問的變量(又名var Media =
一開始)。 希望足夠清楚...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.