尝试重新创建 array.length 方法
Trying to recreate the array.length method
如标题所说,我正在尝试重新创建 array.length 方法并将其作为方法存储在 object 上。问题是我似乎无法弄清楚如何将长度 属性 设置为零...我收到此错误
"应该有一个 'length' 属性 最初是 0"
和...
“错误:预期 [Function] 等于 0”。
我在下面包含了关于如何评估函数的测试用例。
describe('Arrays/Errays', () => {
let array, contents;
beforeEach(() => {
array = new Erray();
contents = array.contents;
});
it('should have a \'length\' property that is initially 0', () => {
expect(array.length).to.not.be(undefined);
expect(array.length).to.be(0);
})
});
这是我目前编写的代码。
function Erray() {
this.contents = [];
length: 0;
}
Erray.prototype.length = function() {
let length = 0;
for (let i = 0; i < this.contents.length; i++) {
length++;
}
return length;
}
var array = new Erray;
第二个错误让我相信一个函数正在返回到测试用例,这就是为什么它说“错误:预期 [Function] 等于 0”,括号中有单词 'Function'。
关于为什么我没有通过测试用例的任何线索或提示?感谢您的宝贵时间!
您可以使用 Object.defineProperty
创建长度为 属性 的 getter。
function Erray() {
this.contents = [];
}
Object.defineProperty(Erray.prototype, 'length', {
get() {
return this.contents.length;
}
});
var array = new Erray;
console.log(array.length);
array.contents.push(1);
console.log(array.length);
如标题所说,我正在尝试重新创建 array.length 方法并将其作为方法存储在 object 上。问题是我似乎无法弄清楚如何将长度 属性 设置为零...我收到此错误
"应该有一个 'length' 属性 最初是 0"
和...
“错误:预期 [Function] 等于 0”。
我在下面包含了关于如何评估函数的测试用例。
describe('Arrays/Errays', () => {
let array, contents;
beforeEach(() => {
array = new Erray();
contents = array.contents;
});
it('should have a \'length\' property that is initially 0', () => {
expect(array.length).to.not.be(undefined);
expect(array.length).to.be(0);
})
});
这是我目前编写的代码。
function Erray() {
this.contents = [];
length: 0;
}
Erray.prototype.length = function() {
let length = 0;
for (let i = 0; i < this.contents.length; i++) {
length++;
}
return length;
}
var array = new Erray;
第二个错误让我相信一个函数正在返回到测试用例,这就是为什么它说“错误:预期 [Function] 等于 0”,括号中有单词 'Function'。
关于为什么我没有通过测试用例的任何线索或提示?感谢您的宝贵时间!
您可以使用 Object.defineProperty
创建长度为 属性 的 getter。
function Erray() {
this.contents = [];
}
Object.defineProperty(Erray.prototype, 'length', {
get() {
return this.contents.length;
}
});
var array = new Erray;
console.log(array.length);
array.contents.push(1);
console.log(array.length);