我正在使用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中意味着什么?它是关键字吗?如果没有,那么为什么每个人都在onloadbody
或window.onload()
中使用它?
答案 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
属性。
Class.extend
不是JavaScript的内置部分,因此如果不知道它是如何定义的,就不可能确切地知道它在做什么。我可以从名称和它如何使用它猜测它创建一个新的“类”或扩展现有的“类”。代码传递一个对象文字({ ... }
部分),告诉它如何定义类。
this
是调用函数的上下文。当您调用对象上的函数(在本例中为someGLNodeObject.init()
)时,this
将设置为该对象。因此this.matrix = sglIdentityM4();
正在设置当前对象的matrix
属性。
在名为init
的对象文字中定义一个函数。 Class.extend
函数可能会像构造函数一样使用init
函数来初始化新的GLnode
实例。