小编Nat*_*nes的帖子

JavaScript对象ID

JavaScript对象/变量是否具有某种唯一标识符?就像Ruby一样object_id.我不是指DOM id属性,而是某种某种类型的内存地址.

javascript unique-id

70
推荐指数
3
解决办法
9万
查看次数

将当前对象($ this)转换为后代类

我有一个类,可能需要将对象更改为后续级别的后代类.这可能吗?我知道一个选项是返回它的副本但是使用子类,但是实际修改当前对象会很好...所以:

class myClass {
  protected $var;

  function myMethod()
  {
    // function which changes the class of this object
    recast(myChildClass); 
  }
}

class myChildClass extends myClass {
}

$obj = new myClass();
$obj->myMethod();
get_class_name($obj); // => myChildClass
Run Code Online (Sandbox Code Playgroud)

php oop type-conversion downcast

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

$ .ajax投掷奇怪的"未捕获的TypeError:非法调用"

我有一些jQuery代码,这是一个非常奇怪的错误.谷歌浏览器调用该错误Uncaught TypeError: Illegal invocation并说它被c.extend.param.e引入jquery-1.4.4.min.js第144行,但是将其回溯到我的$ .ajax调用,如下所示:

$.ajax({
   url: target,
   type: method,
   dataType: 'json',
   data: sendData,
   success: function(result) {
       if (result.redirect) {
           window.location = result.redirect;
       }
       else {
           for (var i in result) {
                if ($(i).size()) {
                    $(i).html(result.i);
                }
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

关于SO的另一个看起来有点像这样的问题将其归结为使用$而没有正确地将它包含在jQuery函数中,但是我很确定这次不是我的错误,因为我一直很小心.

javascript ajax jquery

14
推荐指数
1
解决办法
3万
查看次数

样式文本使其显示在行上方(对于歌词上方的和弦)

我希望能够使用CSS在音乐歌词上方显示和弦.这就是我真正喜欢它的样子:

C                                           F
This line has a C chord, and it also has an F chord
Run Code Online (Sandbox Code Playgroud)

这样和弦的变化会显示在正确的位置.在HTML中它看起来像这样:

<span class="chord">C</span>This line has a C chord, and it also has an <span class="chord">F</span>F chord
Run Code Online (Sandbox Code Playgroud)

我设法通过这种造型几乎获得了效果:

.chord {
  position: relative;
  top: -1em;
}
Run Code Online (Sandbox Code Playgroud)

但问题是它有差距:

C                                            F
 This line has a C chord, and it also has an  F chord
Run Code Online (Sandbox Code Playgroud)

如果只有宽度:0(我将使用overflow:visible)在内联跨度上工作.有没有人有办法解决吗?

编辑:谢谢@Kyle Sevenoaks.对于任何有兴趣的人,这里是我的完整CSS,它允许标记经文,要标记的<p>和弦<span>以及是否显示和弦与show-chords父div上的类切换:

p.song span {
  display: none;
}
p.song.show-chords p {
  line-height:2.3em;
  margin-bottom:2em;
}
p.song.show-chords span …
Run Code Online (Sandbox Code Playgroud)

html css

13
推荐指数
3
解决办法
4559
查看次数

模拟支持链接方法的对象

我想知道是否有一种相当简洁的方法来模拟支持方法链接的对象...例如,数据库查询对象可能有一个如下所示的方法调用:

$result = $database->select('my_table')->where(array('my_field'=>'a_value'))->limit(1)->execute();
Run Code Online (Sandbox Code Playgroud)

如果我必须模拟两个不同的选择查询,以便它们返回不同的结果,则会出现问题.有任何想法吗?

这是关于PHPUnit的,但其他单元测试框架的经验将有所帮助.

php phpunit unit-testing mocking

7
推荐指数
1
解决办法
3025
查看次数

此关键字是构造函数中的窗口对象

好吧,所以我认为我理解这一点(没有双关语意),但显然不是.

var Constructor = function () {
    var internalFunction = function () {
        return this === window;
    };
    this.myMethod = function () {
        alert(internalFunction());
    };
};
var myObj = new Constructor();
myObj.myMethod();
Run Code Online (Sandbox Code Playgroud)

这个警报true.为什么内部函数不能this作为对象?相反,我必须用alert(internalFunction.call(this));myMethod.

编辑:我正在寻找解释为什么this以这种方式分配,而不是var self = this;等等的解决方法.抱歉,如果我没有说清楚.

javascript this

7
推荐指数
1
解决办法
2788
查看次数

PHPUnit没有捕获预期的异常

我有一组测试,我想测试我的类在正确的时间抛出异常.在示例中,我的类使用__get()魔术方法,因此我需要测试在检索到无效属性时抛出异常:

function testExceptionThrownWhenGettingInvalidProperty() {
  $obj = new MyClass();
  $this->setExpectedException("Property qwerty does not exist");
  $qwerty = $obj->qwerty;
}
Run Code Online (Sandbox Code Playgroud)

该类会抛出错误,但不是仅仅获取传递,而是捕获异常!

There was 1 error:

1) QueryTest::testExceptionThrownWhenGettingInvalidProperty
Exception: Property qwerty does not exist
Run Code Online (Sandbox Code Playgroud)

我之前使用过SimpleTest,$this->expectException(new Exception("Property qwerty does not exist"));工作得很好.我知道还有其他方法(@expectedException和try-catch),但是这个方法应该可以工作,看起来更清晰.我有什么想法可以使这项工作?

php phpunit unit-testing exception

6
推荐指数
2
解决办法
7211
查看次数

画布"随机"曲线形状

我想在画布上绘制随机看起来弯曲的斑点,但我似乎无法想出一个算法来做到这一点.我试过像这样创建随机贝塞尔曲线:

context.beginPath();
// Each shape should be made up of between three and six curves
var i = random(3, 6);
var startPos = {
    x : random(0, canvas.width),
    y : random(0, canvas.height)
};
context.moveTo(startPos.x, startPos.y);
while (i--) {
    angle = random(0, 360);
    // each line shouldn't be too long
    length = random(0, canvas.width / 5);
    endPos = getLineEndPoint(startPos, length, angle);
    bezier1Angle = random(angle - 90, angle + 90) % 360;
    bezier2Angle = (180 + random(angle - 90, angle + 90)) …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm drawing html5-canvas

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

使用QUnit的非阻塞异步测试

看来,QUnit功能stop(),并start()允许等待异步测试,但在这段等待期间整个测试套件挂起.有没有办法使用QUnit以非阻塞方式运行异步测试?

javascript qunit

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

node-qunit不包括范围内的源文件

我从npm安装了node-qunit(stable),但似乎无法进行任何测试.我的源文件似乎不包含在范围内.

./source/myscript.js:

var myObj = {
    a : true
}
Run Code Online (Sandbox Code Playgroud)

./test/tests.js:

test("that a is true", function () {
     ok(myObj.a);
});
Run Code Online (Sandbox Code Playgroud)

./test/runner.js:

var runner = require('qunit');
runner.run({
    code : './source/myscript.js',
    tests : './test/tests.js'
});
Run Code Online (Sandbox Code Playgroud)

./Makefile:

test :
<tab>node ./test/testrunner.js

.PHONY: install test
Run Code Online (Sandbox Code Playgroud)

如果我跑make test,我得到一个'ReferenceError: myObj is not defined'错误.源文件确实运行,因为它可能会抛出错误.它似乎并没有像它应该包含在全球范围内.如果我从命令行执行此操作,则无法按照node-qunit自述文件中的说明进行操作.任何人都知道如何让这个工作?

javascript qunit node.js

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