这个Javascript语法是什么意思?

时间:2011-07-07 19:39:59

标签: javascript debugging

我正在使用ROS结构并面临调试方面的一些问题,我找到了这个片段:

ros.visualization.GLNode = Class.extend({
    init: function () {
        this.meshGroupIDs = [ ];
        this.matrix       = sglIdentityM4();
        this.children     = [ ];
    },
});

这些线是什么意思?

ros.visualization.GLnode ::它是否正在尝试加载某些文件?这个.代表什么?

Class.extend ::这是做什么用的?它是否试图扩展该类,如果是,那么哪一个?以我的方式,它将是GLnode

this.matrix ::当我看到this命令时,我总是怀疑它是做什么的?

init:function() ::这个函数在js中意味着什么?它是关键字吗?如果没有,那么为什么每个人都在onloadbodywindow.onload()中使用它?

2 个答案:

答案 0 :(得分:1)

ros.visualization.GLNode = Class.extend({

这是使用某种具有函数Class.extend()的javascript库定义新类(或对象类型)。


init: function () {

这是名为“init”的新类的属性定义。属性的类型是“function”,这意味着它就像一个方法一样工作,可以被调用。


this.meshGroupIDs = [ ];

这是该类对象上的成员变量的定义,并将其初始化为空数组。


this.matrix = sglIdentityM4();

这是thisclass对象上另一个成员变量的定义,并将其初始化为sglIdentityM4()函数调用的返回值。


this.children = [ ];

这是该类对象上的成员变量的定义,并将其初始化为空数组。


“this”是对本地对象的引用,是如何处理您所在对象的实例变量的。

答案 1 :(得分:1)

ros.visualization.GLNode

.运算符允许您访问对象属性,因此ros.visualization.GLNode = ...表示有一个名为ros的对象,具有visualization属性,并且您正在分配某些内容该对象的GLNode属性。

Class.extend

Class.extend不是JavaScript的内置部分,因此如果不知道它是如何定义的,就不可能确切地知道它在做什么。我可以从名称和它如何使用它猜测它创建一个新的“类”或扩展现有的“类”。代码传递一个对象文字({ ... }部分),告诉它如何定义类。

this.matrix

this是调用函数的上下文。当您调用对象上的函数(在本例中为someGLNodeObject.init())时,this将设置为该对象。因此this.matrix = sglIdentityM4();正在设置当前对象的matrix属性。

init:function()

在名为init的对象文字中定义一个函数。 Class.extend函数可能会像构造函数一样使用init函数来初始化新的GLnode实例。