所以,我从来没有这样做过,试图添加一个方法到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());
};