以下是我的课程:
function myfunc(){
// some code
}
1)声明类的方法/功能
myfunc.getInstance = function(){
// some code
};
或者我可以定义如下:
myfunc.prototype.getInstance = function(){
// some code
};
请告诉我使用或不使用原型定义方法/功能有什么区别。
答案 0 :(得分:1)
与
myfunc.prototype.getInstance = function(){
// some code
};
如果创建任何继承myfunc的对象,它将能够使用原型链访问getInstance方法。新对象的__ proto __将指向其父对象的原型,即myfunc的
与
myfunc.getInstance = function(){
// some code};
getInstance方法不能被继承,因此只有myfunc可以调用它,而不能继承它的对象。
示例
function myfunc(){
}
myfunc.getInstance = function(){
console.log("I can be invoked only by myfunc")
}
myfunc.prototype.getInstance2 = function(){
console.log("I can be inherited and called by other objects too")
}
let newobj = new myfunc();
newobj.getInstance2();
// I can be inherited and called by other objects too
newobj.getInstance();
// Uncaught TypeError: newobj.getInstance is not a function
myfunc.getInstance();
// I can be invoked only by myfunc
答案 1 :(得分:0)
原型函数意味着在类的对象上调用(就像OOP中的普通类)。正常函数可以直接在类上调用(如OOP中的静态类)。
function Foo ()
{
}
//Should be called through Foo.SayHello()
Foo.SayHello = function ()
{
}
/*
Should be called on the object of Foo
var MyObject = new Foo();
MyObject.SayHello();
*/
Foo.prototype.SayHello = function ()
{
}