小编Joh*_*han的帖子

onclick =""vs事件处理程序

如果我想要执行一个函数,我更喜欢使用内联js:

<p id="element" onclick="doSomething();">Click me</p>
Run Code Online (Sandbox Code Playgroud)

因为它更容易调试.

但是,我听到人们说不使用内联js,并做:

document.getElementById('element').onclick = doSomething;
Run Code Online (Sandbox Code Playgroud)

为什么推荐使用js事件监听器?

javascript event-handling inline-code

33
推荐指数
3
解决办法
2万
查看次数

创建JS对象的新实例的最有效方法

我正在尝试找出创建对象新实例的最有效方法.

当我开始时,我使用了这样的东西:

var Foo = function(a, b, c)
{
    this.a = a;
    this.b = b;
    this.c = c;
}

Foo.prototype.func = function()
{
    // Do stuff;
}

var bar = new Foo(1, 2, 3);
bar.func();
Run Code Online (Sandbox Code Playgroud)

之后我听说跳过原型会更好,因为新的原型会耗尽不必要的内存,得到这样的东西:

var Foo = function(a, b, c)
{
    return {
        a:a,
        b:b,
        c:c,
        func:function()
        {
            // Do stuff;
        }
    }
}

var bar = Foo(1, 2, 3);
bar.func();
Run Code Online (Sandbox Code Playgroud)

但是,现在我遇到了在调用Foo的多个实例时多次创建相同func的问题...那么怎么样...

var Foo = {
    a:null,
    b:null,
    c:null,
    func: function()
    {
        // Do stuff;
    }
}

function …
Run Code Online (Sandbox Code Playgroud)

javascript oop

5
推荐指数
1
解决办法
187
查看次数

JS,Object跟随一个圆圈

我试图让一个物体围绕另一个物体.我想,并不太难.但事实证明这个圆圈是螺旋式的......我可能使用了错误的公式,但我不确定应该选择哪一个......

var dx = this.x - this.parent.x,
    dy = this.y - this.parent.y,
    r = Math.atan2(dy, dx);

this.x = Math.sin(r) * this.speed + this.x;
this.y = (Math.cos(r) * this.speed * -1) + this.y;
Run Code Online (Sandbox Code Playgroud)

当您执行此代码时,它似乎工作.对象围绕其父对象以弧形移动的每个帧.

然而,弧越来越大,越来越远.

我犯了什么错误?

javascript math animation geometry canvas

4
推荐指数
1
解决办法
2483
查看次数