如何使用String.protype编写自己的方法



我想编写自己的方法来逆转字符串。Mystr.VerverseString应该将其返回。我不想在我的命令末尾使用括号,例如 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"

我认为您可以使用DefineProperty。

为了不使用((,您需要在string.protoype上定义一个getter。

您的代码应遵循步骤:

  1. split((
  2. 反向((
  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"

[更新]尽管这是这个问题的答案,但在这样做时要小心。请阅读:为什么将本地对象扩展不良习惯?

[更新2]正如@ivan Castellanos所说,此方法对以下复杂字符串不起作用:👩‍👩‍👧‍👦。/a/16776621/800817

好的,请尝试一下,这将对您有所帮助。

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

最新更新