我是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
,这让我觉得那些看起来也像是一个类。
很抱歉,如果我的问题很愚蠢,但这段代码看起来很奇怪,而且我看不到任何熟悉我学过的语言(Java,C#)或其他脚本语言(Python)
感谢。
答案 0 :(得分:2)
1)function (ns) {... }
确实是一个论点。解析该函数,并将指向该函数的指针传递给函数Helper.using
。你不会在Java中看到这些东西,但我认为它是Javascript的一个很棒的点。
这是定义回调的常用方法,并且该参数函数看起来确实像回调。
2)不,ns
是一个类对象,或者更好,通常是Object
。它不需要是类的实例。然后回调函数定义对象Point
上的方法ns
。在方法的主体中,它定义(或可能重新定义)方法getX
,getY
和getPosition
,因为this
引用了对象ns
。
再看一下,ns.Point
确实是一个函数,但它可以作为类定义,所以在代码的其他部分你可能会注意到new ns.Point(...)
之类的东西。这就是“类”在Javascript中的工作方式。
答案 1 :(得分:0)
如果您是新手并且对复杂的结构和模式一无所知。在进一步学习之前,你必须首先学习这个概念,这样你就不会混淆或混淆,以防你遇到奇怪的表达。这是一本非常好的教程:http://www.youtube.com/watch?v=gLVmkhLnxwM
我可能没有向您解释您的代码,但我确信我发送的视频确实会有所帮助。