2010-02-27 88 views
2

我創建了一個字符串生成器JavaScript對象,我在我的項目中使用了許多不同的.js文件。調用一個單獨的.js文件中的JavaScript對象類

我可以在單獨的.js文件中創建這個類並從所有其他腳本中調用它,就像C#類文件一樣嗎?

這是可能的,還是我繼續複製並粘貼到每個使用它的.js文件的底部?

回答

5

是的,這不應該是一個問題。只需在html頁面中以正確的順序包含.js文件即可。

+0

感謝您的回覆;) – JGilmartin 2010-02-27 12:10:34

+0

哇。謝謝:)只是我正在尋找嘿嘿。 – chrs 2012-09-21 19:59:56

+0

如果我想在特定文件中使用css類時遇到這種情況,當它的名稱在兩個不同的文件中是相同的,並且它應該在不訂購JS文件的情況下完成 – 2013-03-04 09:46:04

3

如果包括與其他JS在你的主HTML頁面的源文件,然後可以使用「類」如你所願:

<script src="js1.js" type="text/javascript"></script> 
<script src="js2.js" type="text/javascript"></script> 

在上面的例子,你現在可以實例化一個新的實例來自js1.js的一個對象,代碼爲js2.js。要用純JavaScript來做到這一點,你必須將腳本標籤添加到DOM,或使用AJAX來獲取腳本文件和eval()它。

// Create a <script> element 
var scriptEl = document.createElement("script"); 
scriptEl.src = "js2.js"; 
scriptEl.type = "text/javascript"; 

// Append it to the <head> 
document.getElementsByTagName("head")[0].appendChild(scriptEl); 
+7

'eval'是邪惡的! – 2010-02-27 12:08:01

+0

輝煌的,即時通訊如此習慣於c#命名空間,我想到了簡單的解決方案,只是將它添加到HTML中;) – JGilmartin 2010-02-27 12:10:14

+0

@TörökGábor:確實如此,但這並不意味着它不應該** ** 使用。它被認爲是邪惡的原因是由於普遍的濫用,如果每個人都以正確的理由使用它,那麼沒有人會認爲它是邪惡的。 – 2010-02-27 12:15:54

1

爲了完全正確,它不是重要的順序,而是執行代碼的順序。在大多數情況下,Andy's和Segfault的指令都很好,但有時在用戶不足之前包含類文件。例如,如果您使用ExtJS的和你碰巧定義一個onReady處理這樣的內部類:

Ext.onReady(function() { 
    myClass = ... 
}.bind(this)); 

,那麼它不會被你的第二個SRC文件包含到頁面並執行時執行。

我知道,這個例子有點牽強附會:)但只要確保你的代碼是按照正確的順序執行的,而不僅僅是正確的順序。

0

我遇到了這個問題,我想添加一些東西(這可能在幾年前不存在)。

即使認爲你可以添加每個腳本到你的「index.html」這不是一個非常漂亮的做法(恕我直言)。特別是如果你認爲你可能想寫一個擴展(〜框架)。你不想用一堆他必須添加到他的代碼中的腳本標籤來惹惱用戶。你想要的是一個單一的一行:

<script src="yourFramework" (...) /> 

然而,隨着使用的RequireJS你能做到這一點。您可以自由分離您的代碼,「您的用戶」仍然不必爲他的「腳本部分」添加小說。

相關問題