目前,我正在学习狂潮中进行一些前端工作面试。我确实遇到了很多问题,但目前我陷入了一个根本不难的问题,但由于某种原因,我无法使其正常工作。也许你们可以看看:
问题:向数组原型添加打印功能,该功能可打印数组中的所有内容。例如[1,2] .print()-> 1,2
我自信地编写了此函数,知道它会起作用,但没有成功
Array.prototype.print = () => {
let str = ''
for(let i = 0; i < this.length; i++) {
this[i+1] === undefined ? str += this[i] : str += `${this[i]}, `
}
return str
}
console.log([1,2].print())
当我运行函数时,我没有得到任何回报。我的想法是this
应该与我在[1,2]
上工作的数组绑定在一起,但事实并非如此。它绑在窗户上。
知道我做错了什么吗?帮助将不胜感激。
最好, 阿亚兹
答案 0 :(得分:1)
使用箭头函数会将外部作用域绑定到this
,而不是在Array.prototype
的上下文中
Array.prototype.print = function(){
let str = '';
let i = 0;
let size = this.length;
if(size === 1){
return this[0];
}
for(; i < size; i++){
str += this[i];
if(size - 1 !== i){
str += ',';
}
}
return str;
}
console.log([1].print())
console.log([1,2].print())
console.log([1,2,3].print())
答案 1 :(得分:1)
箭头功能没有为this
获得其自身的值。代替:
() => {
写:
function() {