【问题标题】:How can we create javascript methods like toLowerCase method我们如何创建像 toLowerCase 方法这样的javascript方法
【发布时间】:2020-05-27 14:24:54
【问题描述】:

我试图了解 Javascript 方法在幕后是如何工作的。

首先,我在 chrome 的控制台中使用 var 关键字创建了一个变量,并尝试为其添加一个方法:

var name1 = 'SARA';
name1.toLowerCase();

name1 返回sara

在此之后,我尝试使用 let 关键字做同样的事情:

let name2 = 'SARA';
name2.toLowerCase();

正如预期的那样,我们又收到了sara。但是:

如果我尝试返回像这样的名称变量,我会得到 undefined for name2,它是使用 let 关键字声明的!

let name2 = 'SARA';
window.myname
undefined

toLowerCase 方法是如何工作的?如果使用let 关键字声明变量使其在窗口对象中变为undefined,它如何仍然适用于这种数据?!

toLowerCase 这样的 Javascript 方法是否附加到窗口对象?

我们能否创建新的方法,例如 toLowerCase,我们可以在我们的代码中使用它们?

例如,是否有任何解决方案可以创建这样的内容:

var name3 = 'Sara is a pretty girl';
name3.addDotToEnd();
window.name3
'Sara is a pretty girl.'

【问题讨论】:

  • 这能回答你的问题吗? How does toLowerCase() work in Javascript?
  • "有什么解决方案可以创建这样的东西" - 不,字符串是不可变的。您不能就地更改它们。
  • window.myname 返回 undefined 因为您根本没有声明它。但假设您的意思是window.name2,那么由于范围界定,它将返回undefined。它与toLowerCase 完全无关。

标签: javascript


【解决方案1】:

字符串继承自String.prototypeString.prototype(或Object.prototype,它继承自)上的任何内容都可以在字符串上调用:

console.log(String.prototype.hasOwnProperty('toLowerCase'));

要添加可以自己在字符串上调用的方法,请将方法添加到String.prototype

String.prototype.addDotToEnd = function() {
  return String(this) + '.';
};

var name3 = 'Sara is a pretty girl';
console.log(name3.addDotToEnd());

注意

  • 在顶层用var 声明的变量会放在全局对象上,但用letconst 声明的变量不会
  • 字符串是不可变的 - 您不能更改现有字符串,您必须返回一个带有新内容的 new 字符串

【讨论】:

    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2021-03-21
    • 2013-10-12
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多