1

我是 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看起来像方法。所以,function(ns)是一堂课,对吧?如果ns.Point是一个方法,为什么在这个方法中,还有其他方法,比如getXand getY,这让我觉得那些看起来也像一个类。

抱歉,如果我的问题很愚蠢,但是这段代码对我来说看起来很奇怪,而且我没有看到任何熟悉我学过的语言(Java、C#)或其他脚本语言(Python)的东西

谢谢。

4

2 回答 2

2

1)这function (ns) {... }确实是一个论点。解析函数,并将指向函数的指针传递给函数Helper.using。你不会在 Java 中看到这些东西,但我认为这是 Javascript 的一大优点。

这是定义回调的常用方法,并且该参数函数看起来确实像回调。

2)不,ns是一个类对象,或者更好的是,通常是一个Object. 它不需要是类的实例。然后回调函数定义Point对象上的方法ns。在方法的主体中,它定义(或可能重新定义)方法getXgetY并且getPosition,因为this指的是对象ns

再看一遍,ns.Point确实是一个函数,但它可能用作类定义,因此在代码的其他部分中,您可能会注意到类似new ns.Point(...). 这就是“类”在 Javascript 中的工作方式。

于 2012-07-28T08:50:40.447 回答
0

如果您是新手并且不了解复杂的结构和模式。你必须先了解这个概念,然后再进一步,这样你就不会在遇到奇怪的表达时感到困惑或困惑。这是一个非常好的和准确的教程:http ://www.youtube.com/watch?v=gLVmkhLnxwM

我可能没有向您解释您的代码,但我相信我发送的视频真的会有所帮助。

于 2012-07-28T09:32:15.683 回答