我是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