可以在对象原型上声明Javascript函数,如下所示:
<object name>.prototype.<variable name>=function(){
//
//
}
这与下面的声明有何不同?
<object name>.<variable name>=function(){
//
//
}
原型函数与javascript中的普通函数有何不同?
答案 0 :(得分:16)
原型函数是实例函数,而普通函数是“静态”函数。在类的原型上声明的函数将在该类的所有实例上可用。
var MyClass = function(){
};
MyClass.staticFunction = function(){alert("static");};
MyClass.prototype.protoFunction = function(){alert("instance");};
MyClass.staticFunction(); //OK
MyClass.protoFunction (); //not OK
var myInstance = new MyClass ();
myInstance.staticFunction(); //not OK
myInstance.protoFunction (); //OK
答案 1 :(得分:7)
在基础对象的原型上声明的函数由该对象类型的所有实例继承。
例如......
String.prototype.foo = function () {
return 'bar';
};
现在,每个字符串都有函数foo()可用。
'test'.foo(); // returns 'bar'
阅读有关基于原型的继承here
的更多信息答案 2 :(得分:0)
Matt和Igor已经提供了足够的代码示例,但是你可以阅读的最好的文章之一(简短,正确和重点)是Douglas Crockford撰写的Prototypal Inheritance。