Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用String.prototype编写自己的方法?_Javascript - Fatal编程技术网

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

Javascript 如何使用String.prototype编写自己的方法?,javascript,Javascript,我想写我自己的方法来反转字符串。myStr.reverseString应将其反向返回。我不想在命令末尾使用括号,比如myStr.reverseString String.prototype.reverseString{//需要更改此行 return String.split.reverse.join;//此行需要更改 } 让myStr=你好,世界! console.logmyStr.reverseString;//应该预料到!dlroW olleH好的,试试这个,它会帮你的 Object.d

我想写我自己的方法来反转字符串。myStr.reverseString应将其反向返回。我不想在命令末尾使用括号,比如myStr.reverseString

String.prototype.reverseString{//需要更改此行 return String.split.reverse.join;//此行需要更改 } 让myStr=你好,世界!
console.logmyStr.reverseString;//应该预料到!dlroW olleH好的,试试这个,它会帮你的

Object.definePropertyString.prototype,'reverse',{get{ //步骤1.使用split方法返回一个新数组 var splitString=this.split;//var splitString=hello.split; //[h,e,l,l,o] //步骤2.使用反转方法反转新创建的数组 var reverseArray=splitString.reverse;//var reverseArray=[h,e,l,l,o]。reverse; //[o,l,l,e,h] //步骤3.使用join方法将数组的所有元素连接到一个字符串中 var joinArray=reverseArray.join;//var joinArray=[o,l,l,e,h].join; //奥利 //步骤4.返回反向字符串 返回joinArray;}} var x=‘周五打电话给彼得·帕克’;
console.logx.reverse 我想你可以通过使用

为了不使用,您需要在String.prototype上定义一个getter

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

最后,您将得到如下结果:

    Object.defineProperty(String.prototype, 'reverseString', { get() { return this.split('').reverse().join(''); } })

    let myStr = "Hello World!" 

    console.log(myStr.reverseString); // Should expected "!dlroW olleH"
[更新] 虽然这是这个问题的答案,但在做这件事时要小心。请阅读:


[Update 2]正如@Ivan Castellanos所说,这种方法不适用于复杂的字符串,例如:我不想在末尾使用paranthesis。我不想在命令末尾使用paranthesis,例如myStr.reverseString-我可以问一下为什么吗?在我看来,这只会让很多人感到困惑。你可以在String.prototype上定义getter属性,但通常认为搞乱内置原型是一种不好的做法:Object.definePropertyString.prototype,'reverseString',{get{return this.split.reverse.join;}如果你不想调用它,这不是一种方法。您正在寻找一个getter属性。您可以使用“`like so myStr.reverseString`”来调用它,这样您就不需要了。当然,您需要修复代码字符串的其他问题,并使用函数关键字。我不想在命令末尾使用括号,比如myStr.reversestring,但是为什么,有无括号有什么区别??,但OP没有提供答案。但这并不意味着你应该回答OP明确没有问的问题。这不适用于复杂的字符串,例如包含家族表情符号的字符串,请尝试“你是对的!没有。请张贴一个答案,可以处理它,所以我们可以了解这一点。非常感谢。我可以更新我的答案并提及您。之前已经回答过,请在此处检查:,TLDR:UTF-16代理项对表示单个字符,而。按代码点拆分,因此反转这些代码点会产生错误