如何用String.prototype编写我自己的方法?

时间:2019-06-29 13:05:23

标签: javascript

我想编写自己的反转字符串的方法。 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"

2 个答案:

答案 0 :(得分:2)

我认为您可以使用defineProperty完成此操作。

为了不使用(),您需要在String.protoype上定义一个吸气剂。

您的代码应遵循以下步骤:

  1. Split()
  2. Reverse()
  3. join()

最后,您将获得以下内容:

    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);