Javascript原型的整个概念的新功能可能会被混淆。
假设我有一个名为Widget的类,定义为:
var Widget = function (options) {
// constructor code here
}
Widget.prototype.constructor = Widget;
Widget.prototype.myGreatFunction = function(){}
我是否可以致电Widget.myGreatFunction();
或者是否需要致电Widget.prototype.myGreatFunction()?
来运行强大功能?
答案 0 :(得分:3)
如果使用构造函数创建实例,则可以使用该函数:
var w = new Widget();
w.myGreatFunction();
您也可以通过原型引用它来使用该功能:
Widget.prototype.myGreatFunction();
答案 1 :(得分:2)
这样做的理想方式是创建实例并使用原型函数。
然而,由于函数存储在Widget.prototype.myGreatFunction
中,您绝对可以访问它。
原型中定义的函数是共享资源,这是以这种方式使用它的主要优势。
var Widget = function (options) {
// constructor code here
}
Widget.prototype.constructor = Widget;
Widget.prototype.myGreatFunction = function(i){console.log('myGreatFunction', i);};
var a = new Widget();
a.myGreatFunction(1);
var b = new Widget();
b.myGreatFunction(2);