Javascript Custom Array.prototype.method logs 'not defined'



所以,我从来没有这样做过,试图添加一个方法到Array.prototype。有关用法,请参阅下面的console.log语句。它一直告诉我方法没有定义。我不知道我做错了什么。的帮助!

到目前为止,我最好的结论/猜测是"这"。指向全局对象,这就搞砸了。但怎么补救,我不知道。(
const solution = input =>{

Object.defineProperty(
Array.prototype, 'polyReverse', {
value: () => this ? (polyReverse(this.substr(1)) + this[0]) : (this),
configurable: true, writable: true  
}
);
console.log("string".split("").polyReverse().join(""));
};
/*****
* 
* ReferenceError: polyReverse is not defined
*   at Array.value (main.js on line 4:20)
* 
* 
*///////

注意:我也试过这个值value..

value: () => this ? (this.substr(1).polyReverse() + this[0]) : (this),

and this…

value: () => this ? (this.polyReverse(this.substr(1)) + this[0]) : (this),

运气不好

我尝试了以下方法,并能够解决not defined的问题

Array.prototype.polyReverse = function(value) {
return this ? (this.substr(1).polyReverse() + this[0]) : (this)
};
console.log("string".split("").polyReverse().join(""));

除此之外,你的逻辑似乎有一些问题,它抛出了一个错误。我不确定你想用polyReverse实现什么,所以你将是修复这个逻辑的最佳人选。

既然您特别询问了not defined问题,上面的代码片段应该可以解决您的问题,并帮助您进一步修复逻辑

所以根据这里有帮助的人的建议,我能够解决每个人都说的问题,不要使用箭头函数。是的!此外,还注意到扩展本机方法是多么糟糕!我将创建一个子类来做这个

谢谢大家的帮助。

工作代码…

const solution = input =>{

Object.defineProperty(
Array.prototype, 'polyReverse', {
value: function() {
console.log(this); 
return (this.length > 0 ? 
(this.join("").substr(1).split("").polyReverse() + this[0]) : 
(this)
)},
configurable: true, 
writable: true  
}
);
console.log("string".split("").polyReverse());
};

最新更新