有人能解释一下这些javascript概念吗?

有人能解释一下这些javascript概念吗?,javascript,constructor,Javascript,Constructor,所以我最近一直在看,我很难理解一些事情 当使用以下代码首次声明“类”时,我理解: function GravityPoint(x, y, radius, targets) { Vector.call(this, x, y); this.radius = radius; this.currentRadius = radius * 0.5; this._targets = { particles: targets.particles || [],

所以我最近一直在看,我很难理解一些事情

当使用以下代码首次声明“类”时,我理解:

function GravityPoint(x, y, radius, targets) {
    Vector.call(this, x, y);
    this.radius = radius;
    this.currentRadius = radius * 0.5;

    this._targets = {
        particles: targets.particles || [],
        gravities: targets.gravities || []
    };
    this._speed = new Vector();
}
我说的向量调用(这个,x,y)对吗以便不必声明位置向量?如果我理解正确,您可以拨打:

var a = new GravityPoint(0,0,10,[..]);
然后
a.x==0
?(假设向量具有x和y属性)

我的第二个问题是关于这段代码:

GravityPoint.prototype = (function(o) {
    var s = new Vector(0, 0), p;
    for (p in o) s[p] = o[p];
    return s;
})({
    gravity:       0.05,
    isMouseOver:   false,
    dragging:      false,
    destroyed:     false,
    _easeRadius:   0,
    _dragDistance: null,
    _collapsing:   false,

    hitTest: function(p) {
        return this.distanceTo(p) < this.radius;
    }
    ...
});
GravityPoint.prototype=(函数(o){
var s=新向量(0,0),p;
对于(p in o)s[p]=o[p];
返回s;
})({
重力:0.05,
伊斯穆塞弗:错,
拖动:false,
销毁:错误,
_半径:0,
_拖动距离:空,
_崩溃:错,
hitTest:功能(p){
将此.distance返回到(p)
我不理解这个结构:
MyClass.prototype=(函数(o){})({prop1:val1})

对我来说,这就像将第二部分(
{prop1:val1}
)作为参数发送给函数
函数(o){}
,因为该函数返回向量,所以没有意义

谢谢你的帮助

很好

简单例子

(function(a, b) {
  // a == 'hello'
  // b == 'world'
})('hello', 'world');
在您的例子中,您正在定义这个不确定的函数

function(o) {
    var s = new Vector(0, 0), p;
    for (p in o) s[p] = o[p];
    return s;
}
然后使用此参数调用它,并将结果存储在GravityPoint.prototype中

{
    gravity:       0.05,
    isMouseOver:   false,
    dragging:      false,
    destroyed:     false,
    _easeRadius:   0,
    _dragDistance: null,
    _collapsing:   false,

    hitTest: function(p) {
        return this.distanceTo(p) < this.radius;
    }
}
{
重力:0.05,
伊斯穆塞弗:错,
拖动:false,
销毁:错误,
_半径:0,
_拖动距离:空,
_崩溃:错,
hitTest:功能(p){
将此.distance返回到(p)
熟悉典型的JS,以便更好地理解此评论。基本上
GravityPoint
“继承”自
Vector
。这是通过将
GravityPoint
的原型设置为和类型为
Vector
的对象来实现的,因此,如果在前者上访问方法/字段,则如果未重新定义,则最终在后者中搜索。这就是
返回s
所做的。for只是将参数的属性复制到用作原型的
向量中。这将为它们提供一个默认值。感谢您的明确解释!谢谢,为什么Vector.call()用于重力点构造函数?它与原型继承有关?是的,它相当于调用super(this);感谢您的澄清!