Javascript Koans——不能解决一个测试
Javascript Koans - cannot solve one test
我正试图从Javascript Koans和卡住的"反射"块解决测试。谁能解决并解释下一个块的解决方案:
test("hasOwnProperty", function() {
// hasOwnProperty returns true if the parameter is a property directly on the object,
// but not if it is a property accessible via the prototype chain.
var keys = [];
var fruits = ['apple', 'orange'];
for(propertyName in fruits) {
keys.push(propertyName);
}
ok(keys.equalTo(['__','__', '__']), 'what are the properties of the array?');
var ownKeys = [];
for(propertyName in fruits) {
if (fruits.hasOwnProperty(propertyName)) {
ownKeys.push(propertyName);
}
}
ok(ownKeys.equalTo(['__', '__']), 'what are the own properties of the array?');
});
你必须知道JavaScript的特性是一个原型继承模型,而不是一个经典模型。实际上,这意味着继承是通过所谓的原型链完成的。
当你试图用"for in"来访问一个数组的属性时,它会"爬上"原型链,一直到arrayname。原型,因为它继承自它!
如果你想了解更多关于这个特性的信息,我强烈建议你看看Ivo Wetzel的JavaScript Garden,那是我最初找到答案的地方!
对于其余的,你还应该知道javascript引用数组的"自己的"属性作为十进制数,即。:第一个属性为'0',第二个属性为'1',等等
所以,解决方案是这样的:
test("hasOwnProperty", function() {
// hasOwnProperty returns true if the parameter is a property directly on the object,
// but not if it is a property accessible via the prototype chain.
var keys = [];
var fruits = ['apple', 'orange'];
for(propertyName in fruits) {
keys.push(propertyName);
}
ok(keys.equalTo(['0', '1', 'fruits.prototype'), 'what are the properties of the array?');
var ownKeys = [];
for(propertyName in fruits) {
if (fruits.hasOwnProperty(propertyName)) {
ownKeys.push(propertyName);
}
}
ok(ownKeys.equalTo(['0', '1']), 'what are the own properties of the array?');
});
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 一个密码测试程序,如果存在空格,它会提醒用户
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 有没有什么干净的方法可以对一组||测试进行编码,看看变量的值是否在其中一个测试中
- 如何编写一个测试来验证函数是否已成功将字符串列表(在数组中指定)打印到屏幕上
- 摩卡只运行一个测试文件
- 使用Javascript在实时网站上创建一个测试环境
- 从另一个测试调用另一个量角器测试
- 当使用(substack's)磁带模块进行测试时,如何在一个文件中只运行一个测试
- Jasmine,一个测试,多个ajax请求(错误:ajax已经被监视)
- 使用php创建一个测试,将数组数据存储在数据库的字段中
- 我创建了一个测试,修改了我在网上找到的代码,但我有一个小问题
- 一个测试有3个部分,其中第一部分必须大如浏览器窗口的jQuery和Javascript
- 避免firefox protractor中多个测试文件中的一个测试
- QUnit:每个方法一个测试,每个方法有多个断言或多个测试
- JS磁带-等待前一个异步测试完成,以移动到下一个测试
- Rails:如何编写一个测试,以确保几个字段在关闭时隐藏,但在打开时显示,并且具有正确的值
- 为什么这个代码工作在一个测试网站,我有,但不是在本地页面或jfillde
- Javascript Koans——不能解决一个测试
- Angular2 和 Karma 运行只有一个测试套件,也就是 describe.only