我想澄清这个疑问,但可能有我不知道的解决方案,所以请帮助我。通常在编写代码时我们称之为函数
function call(a){
/*some task*/
}
作为
var a = "HELLO";
var data = call(a);
所以传递值将在函数call()
内处理,并返回一些值data
。
但是在调用一些内置JavaScript函数(如toString()
,toLowerCase()
)的情况下,我们不会在函数内部传递值,而是将函数称为a.toLowercase()
。
这种类型的函数调用如何在幕后工作,有没有办法调用自定义函数,就像调用内置函数一样?提前谢谢。
答案 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");
答案 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"