註冊
登錄
論壇
熱門
搜索
會員
幫助
導航
私人消息 (0)
公共消息 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化
»
JavaScript 討論
» 請問一個用物件做命名空間的問題
返回列表
發帖
bert507
發短消息
加為好友
bert507
當前離線
UID
1387
帖子
3
精華
0
積分
5
閱讀權限
10
在線時間
0 小時
註冊時間
2011-2-22
最後登錄
2013-10-12
新手上路
帖子
3
主題
2
精華
0
積分
5
威望
2
金錢
1
1
#
跳轉到
»
倒序看帖
打印
字體大小:
t
T
發表於 2013-10-12 14:44
|
只看該作者
請問一個用物件做命名空間的問題
各位大大小弟看書學習遇到一些無法理解的部分,還請各位大大能解惑:
Q1.不是很理解為什麼在firebug中顯示出來的命名空間路徑會是槽狀結構?
Q2.console.log(parent); 跟 console.log(MYAPP); 在firebug中為什麼顯示的是不一樣的?
以下是書籍中的程式片段:
var MYAPP = MYAPP || {};
MYAPP.namespace = function(ns_string){
var parts = ns_string.split("."),
parent = MYAPP,
i;
if(parts[0]==="MYAPP"){
parts = parts.slice(1);
}
//判斷在MYAPP全域物件中有沒有這次要新增的屬性
for( i = 0; i < parts.length; i += 1 ){
//如果屬性不存在就建立
if( typeof parent[parts[i]] === "undefined" ){
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
console.log(parent);
console.log(MYAPP);
return parent;
}
MYAPP.namespace("MYAPP.a.b.c.d");
收藏
分享
0
0
0
推
踩
50 字節以內
不支持自定義 Discuz! 代碼
wmh
發短消息
加為好友
wmh
當前離線
UID
2
帖子
763
精華
2
積分
232
閱讀權限
200
來自
Taipei
在線時間
842 小時
註冊時間
2007-7-14
最後登錄
2020-9-29
管理員
帖子
763
主題
210
精華
2
積分
232
威望
232
金錢
0
2
#
發表於 2013-10-14 03:12
|
只看該作者
你的命名空間指的是 MYAPP.a.b.c.d 嗎?
這樣的結構在 JavaScript 是物件中的物件,所以是槽狀結構沒錯。
你那段程式是用這樣的結構來模擬命名空間~
window.parent 跟 window.MYAPP 是不同的東西,沒錯喔。
To infinity and beyond!
TOP
hasschi
發短消息
加為好友
hasschi
當前離線
UID
2480
帖子
4
精華
0
積分
3
閱讀權限
10
在線時間
1 小時
註冊時間
2014-4-9
最後登錄
2014-9-10
新手上路
帖子
4
主題
0
精華
0
積分
3
威望
0
金錢
1
3
#
發表於 2014-4-9 11:24
|
只看該作者
[i=s] 本帖最後由 hasschi 於 2014-4-9 11:26 編輯 [/i]
因為這一行的關係:
parent = parent[parts[i]];
圖型化:
{
namespace: function 暱名函數(ns_string){...},
a:{
b:{
c:{
d:{} <-- parent 指向這個物件
}
}
}
} <-- MyAPP 指向這個物件
TOP
返回列表
回復
發帖
閒聊、灌水、測試、廣告
JavaScript 應用、資源、新聞
新玩意兒
JavaScript 教學、心得分享
電腦網路技術
JavaScript 範例
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]