如何调用静态函数,如成员函数

时间:2017-09-25 11:36:46

标签: javascript function static-methods member-functions

我想澄清这个疑问,但可能有我不知道的解决方案,所以请帮助我。通常在编写代码时我们称之为函数

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

作为

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

所以传递值将在函数call()内处理,并返回一些值data

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

这种类型的函数调用如何在幕后工作,有没有办法调用自定义函数,就像调用内置函数一样?提前谢谢。

2 个答案:

答案 0 :(得分:3)

我认为可能的原因可能是这些函数绑定到String Object原型,这就是为什么你可以将它称为a.toLowerCase()
例如: String.prototype.toLowerCase()

我想如果你尝试将函数添加到String Object的原型中。你可以用上面的方式来称呼它 例如

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

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

答案 1 :(得分:2)

你实际上是指方法,它们与函数略有不同(无论如何,它们可以被想象为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"