如何像成员函数一样调用静态函数

How to call static functions like member functions

我想澄清一下这个疑惑,但可能有我不知道的解决方法,所以请帮助我。通常在编写代码时我们调用一个函数

function call(a){
   /*some task*/
}

作为

var a = "HELLO";
var data = call(a);

所以传递值将在函数内部处理 call() 和 return 一些值到 data

但是在调用某些内置 JavaScript 函数的情况下,例如 toString()toLowerCase(),我们不会在函数内部传递值,而是调用函数 a.toLowercase().

这种类型的函数调用在幕后是如何工作的,有没有什么方法可以像调用内置函数那样调用自定义函数?提前致谢。

我认为可能的原因可能是这些函数绑定到字符串对象原型,这就是为什么您可以将其称为 a.toLowerCase()
例如: String.prototype.toLowerCase()

我想如果您尝试向字符串对象的原型添加函数。您将能够以上述方式调用它。
例如 :

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        alert(char + " does not appear in " + this);
    } else {
        alert(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

"Hello".distance("H");

以上示例来自Link:javascript: add method to string class

你实际上指的是方法,它与函数略有不同(无论如何,它们可以被想象成函数的 OOP 等价物)。基本上 javascript 中的每个基元(如 String、Number 等)都可以用作对象:

var foo = "Bar"; // Bar
var baz = foo.toLowerCase() // bar

这里的foo是一个字符串。使用 toLowerCase 方法时,javascript 实际上将字符串包装在一个 String 对象中,以使其方法可供使用。

// behind the scenes
var magicTemporaryFoo = new String(foo);
var magicTemporaryFooMethodResult = magicTemporaryFoo.toLowerCase();

如果你想开始使用对象及其方法,我建议你好好读一读,“You don't know Js - This & Object Prototypes