我想编写自己的反转字符串的方法。 myStr.reverseString应该返回相反的状态。我不想在命令结尾使用括号,例如myStr.reverseString()
String.prototype.reverseString(){ // This line need to be changed
return String.split("").reverse().join(""); // This line need to be changed
}
let myStr = "Hello World!"
console.log(myStr.reverseString); // Should expected "!dlroW olleH"
答案 0 :(得分:2)
我认为您可以使用defineProperty完成此操作。
为了不使用(),您需要在String.protoype上定义一个吸气剂。
您的代码应遵循以下步骤:
最后,您将获得以下内容:
Object.defineProperty(String.prototype, 'reverseString', { get() { return this.split('').reverse().join(''); } })
let myStr = "Hello World!"
console.log(myStr.reverseString); // Should expected "!dlroW olleH"
[更新] 尽管这是此问题的答案,但在执行此操作时请务必小心。请阅读:Why is extending native objects a bad practice?
[更新2]正如@Ivan Castellanos所说,此方法不适用于复杂的字符串,例如:????。,如果需要这样做,请阅读:https://stackoverflow.com/a/16776621/800817 >
答案 1 :(得分:0)
好的,尝试一下,这将为您提供帮助。
Object.defineProperty(String.prototype, 'reverse', { get() {
// Step 1. Use the split() method to return a new array
var splitString = this.split(""); // var splitString = "hello".split("");
// ["h", "e", "l", "l", "o"]
// Step 2. Use the reverse() method to reverse the new created array
var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse();
// ["o", "l", "l", "e", "h"]
// Step 3. Use the join() method to join all elements of the array into a string
var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join("");
// "olleh"
//Step 4. Return the reversed string
return joinArray; } })
var x = 'Friday call peter parker';
console.log(x.reverse);