在JavaScript
中全域變數常會引起命名衝突,甚至有時侯重寫變數也不是按照你想像中的順序來的,所以為了避免全域變數名稱
衝突,創建命名空間
成為最優解。
1.透過閉包(Closure)和Object實作
在閉包中宣告所有變數與方法,並透過一個JSON
Object
傳回公有介面:
var NameSpace = NameSpace || {}; NameSpace.Hello = (function() { //待返回的公有对象 var self = {}; //私有变量或方法 var name = 'world'; //公有方法或变量 self.sayHello = function(_name) { return 'Hello ' + (_name || name); } ; //返回的公有对象 return self; }());
#2.透過JSON物件建立Object,程式碼如下:##
var NameSpace = NameSpace || {}; NameSpace.Hello = { name: 'world' , sayHello: function(_name) { return 'Hello ' + (_name || this.name); } };
3.透過函數(function)創建:(較為複雜)
這是比較常見的寫法,透過宣告一個 function實現,函數裡設定初始變量,公共方法寫入
prototype,如:
var NameSpace = NameSpace || {}; /* Function */ NameSpace.Hello = function() { this.name = 'world'; }; NameSpace.Hello.prototype.sayHello = function(_name) { return 'Hello ' + (_name || this.name); }; var hello = new NameSpace.Hello(); hello.sayHello();
4.透過函數(function)建立:(較為簡潔)
var NameSpace = NameSpace || {}; NameSpace.Hello = new function() { var self = this; var name = 'world'; self.sayHello = function(_name) { return 'Hello ' + (_name || name); }; };推薦:《
2021年js面試題目及答案(大匯總)》
以上是JavaScript創建命名空間的多種玩法的詳細內容。更多資訊請關注PHP中文網其他相關文章!