javascript - 奇怪的结构,什么意思?

标签 javascript

我是 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 是一个方法,为什么在这个方法中,还有其他方法,如 getXgetY 这让我觉得那些看起来也像一个类。

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

谢谢。

最佳答案

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

这是定义回调的常用方法,而且那个参数函数看起来确实像一个回调。

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

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

关于javascript - 奇怪的结构,什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699445/

相关文章:

javascript - IE10 setInterval 内存泄漏的解决方法

javascript - 使用 jQuery 解析 XML 并填充文本字段

javascript - 如何检测 Javascript 中的控制台错误(由于语法错误)

javascript - 在 JavaScript 中使用递归获取范围数

javascript - 如何绑定(bind)到 Aurelia 中的编码图像?

javascript - 如何设置单击特定单选按钮时需要的选择表单?

javascript - 如何实现 data() 的非 jQuery 版本?

javascript - 循环遍历包含 itemId 的数组,从每个 itemid 的 api 获取数据

javascript - Array reduce 函数——为什么这两个(看起来是等价的)函数返回不同的对象

javascript - 我的框架中的 Angular UI 路由器注入(inject)器错误