我的腳本中存在一堆函數,它駐留在.js文件中。 如果某些其他人編寫的其他腳本使用與我的腳本中相同的函數名稱,如何避免與同一頁面中的函數名稱發生衝突?避免與函數命名約定衝突javascript
有沒有辦法做到這一點?
我的腳本中存在一堆函數,它駐留在.js文件中。 如果某些其他人編寫的其他腳本使用與我的腳本中相同的函數名稱,如何避免與同一頁面中的函數名稱發生衝突?避免與函數命名約定衝突javascript
有沒有辦法做到這一點?
使用命名空間..
var company = {};
company.doSomething = function() {
};
company.project = {};
company.project.submodule = {};
company.project.submodule.doSomething = function() {};
如果你不需要你的腳本之外訪問這些功能,你可以在一個立即調用的函數表達式包住整個腳本:
(function() {
// Your code here
}());
這引入了一個新的範圍,因此它內部的任何聲明都不可見。
如果你需要一個範圍的外部訪問,使您的充當「命名空間」的方法:
var YourStuff = (function() {
// Private functions etc...
// Expose public methods
return {
someMethod: function() {}
};
}());
通過採取這種方法,你只推出單一的全球標識,減少衝突的機會。你可以調用方法如下:
YourStuff.someMethod();
@ alex23 - 如何影響任何時間? 「重疊關閉」是什麼意思? – 2013-04-09 10:08:16
@ alex23 - 是的,在JavaScript中沒有真正的「私人」這樣的東西。 IIFE一旦被評估就執行......與其他函數調用相同。它與DOM無關。如果您需要等待DOM準備好,您可以在您的IIFE中使用DOM準備好的處理程序。 – 2013-04-09 10:12:08
你無法避免它徹底,但如果u包裝在一個類中即會多大意義 – 2013-04-09 10:05:21
_some其他guys_的? – Halcyon 2013-04-09 10:08:41