首先,您要创建三个函数,作为Array类的原型返回以下内容:
toTwenty()` returns `[1, 2, 3 . . . 20]
下面是测试用例
describe('Binary Search to traverse an ordered list, effectively', function() {
describe('Populate the arrays with valid content', function() {
it('should create an array from 1 to 20, with intervals of 1', function() {
expect(oneToTwenty[0]).toBe(1);
expect(oneToTwenty[19]).toBe(20);
expect(oneToTwenty.length).toBe(20);
for(var i = 0; i < oneToTwenty.length - 1;i++) {
expect(oneToTwenty[i + 1] - oneToTwenty[i]).toBe(1);
}
});
这是下面的代码是我的代码,但我一直在
var oneToTwenty = [].toTwenty();
"TypeError: Object has no method 'toTwenty'"
这是我的代码
function oneToTwenty(){
}
oneToTwenty.prototype.toTwenty = function(){
var start = 1;
var end = 20;
var oneToTwenty = [];
for(var i = start; i <= end; i += 1){
oneToTwenty.push(i);
}
return oneToTwenty;
}
答案 0 :(得分:0)
这个var oneToTwenty = [].toTwenty();
让我觉得你正在尝试更改Array原型,而不是创建一个新类型。您无法覆盖数组文字的含义,但您可以添加本机类型的方法:
Array.prototype.toTwenty = function(){
var start = 1;
var end = 20;
for(var i = start; i <= end; i += 1){
this.push(i);
}
return this;
}
var oneToTwenty = [].toTwenty();
console.log(oneToTwenty); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
但我认为这不是一个好主意。更改本机JavaScript类型可能会干扰其他库如何期望JavaScript的行为,如果这是一个很受欢迎的事情,库和代码将不断覆盖自己。只需构建自己的列表类型,使用数组并保留数组本身。仅仅因为你能做到并不意味着你应该这样做。