Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 理解matter.js的Box代码:this、push和pop_Javascript_This_Matter.js - Fatal编程技术网

Javascript 理解matter.js的Box代码:this、push和pop

Javascript 理解matter.js的Box代码:this、push和pop,javascript,this,matter.js,Javascript,This,Matter.js,我是JavaScript新手,很难直观地理解下面的代码片段。它是一些物理引擎(matter.js)中用来制作盒子的代码 我的问题是: 为什么不使用w或h,为什么将“this.w”指定给w,将“this.h”指定给h 我被推弄糊涂了。为什么括号里什么都没有?默认情况下它添加了什么 pop()也是这样。这是什么 为什么不使用w或h,为什么将“this.w”指定给w,将“this.h”指定给h 这使w和h成为长方体的属性。之后,如果你要说 box1 = new Box(10,10,10,10) c

我是JavaScript新手,很难直观地理解下面的代码片段。它是一些物理引擎(matter.js)中用来制作盒子的代码

我的问题是:

  • 为什么不使用w或h,为什么将“this.w”指定给w,将“this.h”指定给h
  • 我被推弄糊涂了。为什么括号里什么都没有?默认情况下它添加了什么
  • pop()也是这样。这是什么
为什么不使用w或h,为什么将“this.w”指定给w,将“this.h”指定给h

这使w和h成为长方体的属性。之后,如果你要说

box1 = new Box(10,10,10,10)
console.log(box1.w, box1.h)
您将能够查看和操作这些属性。因为您的矩形正在使用这些属性来绘制自身,如果您操作这些属性,则矩形的绘制也将更改

我被推弄糊涂了。为什么括号里什么都没有?默认情况下它添加了什么

我相信您正在研究利用p5.js库的代码push()和
pop()
访问绘图状态。本质上,
push()
是“开始绘图”,而
pop()
是“停止绘图”。因此,在这里,他们访问绘制状态,绘制一个矩形,然后关闭绘制状态


您可以阅读更多关于p5的内容。

共享
push()
pop()
push
pop
的实现,图形库通常使用它们来控制绘制内容的变化。
push
推送要应用的新转换,发生
translate
转换,使用当前转换绘制
rect
,然后
pop
弹出(删除)当前转换,这样它就不会影响正在绘制的任何其他转换。因为
show()
不在
原型上
,在实例上初始化
w
h
在这里没有任何好处(除了使它们在构造函数之外是可变的)。通常,成员方法应该定义为
Box.prototype.show=function(){…}
在构造函数外部,在这种情况下,需要在实例上初始化
w
h
。此关键字指它所属的对象。这里我们不能使用w或h,因为它们只是函数框的局部变量,或者我们可以说它们具有块级别的作用域,因此不能在该块之外使用。
box1 = new Box(10,10,10,10)
console.log(box1.w, box1.h)