簡體   English   中英

javascript包含問題和陷阱

[英]javascript includes problems and pitfalls

一個人在使用javascript時會遇到什么樣的問題和陷阱( <script src="sample.js" type="text/javascript><script> ),以及如何避免它們?

我問這個問題是因為我剛遇到一個問題,我在整體布局模板中包含的速度模板文件中編寫了JavaScript代碼。 布局模板包含許多不同的javascript。 我的JavaScript代碼本身在頁面上就可以正常工作,但是當包含在布局模板中時,它開始崩潰。 (沒有javascript錯誤,但無法正常運行)。

聽起來好像您正在碰撞全局對象。 在這種情況下,最好的選擇是將所有代碼移到名稱空間中,這意味着創建一個對象或匿名函數來容納您編寫的javascript代碼。

例如,而不只是做

var myWord = 'hello!';
alert(myWord);

您可能已經在使用myWord這個名稱了

(function() {
    var myWord = 'hello!';
    alert(myWord);
})();

或者如果您需要堅持的事情,

var myUniqueNamespace = new (function() {
    this.myWord = 'hello!';
})();
alert(myUniqueNamespace.myWord);

您只需要確保myUniqueNamespace確實是唯一名稱,就可以在其中添加任何您喜歡的名稱作為屬性。

重新封閉評論:不太完全,但是我們可以像這樣

var myUniqueNamespace = new (function() {
    var myWord = 'hello!';
    this.sayWord = function() { return myWord; };
})();
alert(myUniqueNamespace.sayWord());

myWord存在於用於創建myUniqueNamespace的匿名函數的范圍內,因此您不能直接從外部進行操作(類似於其他語言中的private成員)。 然而該方法sayWord在相同的范圍內被定義myWord和關閉在其上,這意味着獲得myWord保持在確定指標的方法內。 也許這不是最清楚的解釋,但我希望這個例子能使之清楚。

暫無
暫無

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

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