我是JavaScript的一員,只是學習一些基本的東西(函數,變量等),我對JavaScript中的複雜結構知之甚少。奇怪的結構,這是什麼意思?
當我閱讀其中一個web應用程序的源代碼時,有一個重要的一點是我無法理解。下面的代碼:
Helper.using('py.Figures' , function (ns) {
ns.Point = function (params) {
ns.Figure.call(this, params);
this.setType('Point');
this.visual(new Kinetic.Circle({
radius:5, strokeWidth:2,
fill:'red', stroke:'black',
draggable:false
}));
this.getX = function() {
};
this.getY = function() {
};
this.getPosition = function() {
return {
x:this.getX(), y:this.getY()
}
}
ns.Point.distance = function (p1, p2) { // some code }
ns.MidPoint = function (params) { // some code }
};
1)第一點,我沒有在上面的代碼知道是第一行聲明:
Helper.using('py.Figures' , function (ns) {... });
本文檔中的許多文件中使用這種結構。在這個文檔中,有一個文件名爲Helper
,但是當我在這個文檔中搜索時,我沒有看到像py.Figures
(通過使用Control + F)之類的東西。那麼,它真的指向了什麼?
上面的代碼看起來像一個函數,那麼function(ns)
是什麼意思,它看起來像參數,但我不這麼認爲。
2)第二點,我不知道的是:
ns.Point
,ns.Point.distance
,ns.MidPoint
樣子了methodA。所以,function(ns)
是一類,對不對?如果ns.Point
是一種方法,爲什麼在這種方法中,還有其他方法,如getX
和getY
,這讓我覺得那些看起來像一個類。
很抱歉,如果我的問題是愚蠢的,但是這個代碼看起來怪我,我沒有看到任何familar一些語言,我已經學會(Java,C#),或其他腳本語言太(Python)的
謝謝。
名稱'ns'表明這被用作*名稱空間*。這可能會將新的方法'Point','Point.distance'和'MidPoint'添加到作爲「py.Figures」命名空間的對象中。 – DCoder 2012-07-28 09:20:47
@DCoder我想是這樣,但它確實可以是任何東西。 'Helper.using'可以是某種類/對象擴展器,將第一個參數考慮在內並擴展它(這可能表明'eval'被用在某處......呃)。 – MaxArt 2012-07-28 09:27:04
@MaxArt你能告訴我'ns.Point'和'this.getX()'之間的區別嗎,因爲如你所說,它既定義了對象'ns'的方法?謝謝:) – hqt 2012-07-28 09:28:42