Javascript 自定义 Array.prototype.method 日志 'not defined'
Javascript Custom Array.prototype.method logs 'not defined'
所以,我以前从未这样做过,试图向 Array.prototype 添加一个方法。有关用法,请参阅下面的 console.log 语句。它一直告诉我方法未定义。我不知道我做错了什么。求助!
到目前为止,我最好的结论/猜测是“this”指的是全局对象,这不知何故搞砸了。但如何解决,无从知晓。 :(
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: () => this ? (this.substr(1).polyReverse() + this[0]) : (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
问题,以上代码片段应该可以解决您的问题并帮助您进一步解决逻辑问题
所以根据这里有用的人的建议,我能够解决大家所说的问题,不要使用箭头函数。是的!另外,注意到扩展本机方法是多么糟糕!我现在会做一个子class来做这个。
感谢大家的帮助。
工作代码...
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());
};
所以,我以前从未这样做过,试图向 Array.prototype 添加一个方法。有关用法,请参阅下面的 console.log 语句。它一直告诉我方法未定义。我不知道我做错了什么。求助!
到目前为止,我最好的结论/猜测是“this”指的是全局对象,这不知何故搞砸了。但如何解决,无从知晓。 :(
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: () => this ? (this.substr(1).polyReverse() + this[0]) : (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
问题,以上代码片段应该可以解决您的问题并帮助您进一步解决逻辑问题
所以根据这里有用的人的建议,我能够解决大家所说的问题,不要使用箭头函数。是的!另外,注意到扩展本机方法是多么糟糕!我现在会做一个子class来做这个。
感谢大家的帮助。
工作代码...
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());
};