JavaScript 哎呀 : defining function with or witout prototype

标签 javascript oop

下面是我的类(class):

function myfunc(){
    // some code
}

1) 声明类的方法/函数

myfunc.getInstance = function(){
          // some code
};

或者我可以像下面这样定义:

myfunc.prototype.getInstance = function(){
    // some code
};

请告诉我定义带有或不带有原型(prototype)的方法/函数有什么区别。

最佳答案

myfunc.prototype.getInstance = 函数(){ //一些代码 };

如果你创建任何继承myfunc的对象,它将能够通过原型(prototype)链访问getInstance方法。新对象的 __ proto __ 将指向其父对象的原型(prototype),即 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

关于JavaScript 哎呀 : defining function with or witout prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15674766/

相关文章:

javascript - 使用 jquery/ghost 在特定页面上使事件页面样式不同

javascript - 检测字符串是否与格式说明符字符串匹配

javascript - 在 Typescript 中避免 AJAX Gets 多次回调的优雅方法?

delphi - 之后向类添加接口(interface)

python - 对象列表不可迭代且调用变量位于其他函数中

perl - 如果不创建对象,Perl 的面向对象接口(interface)还有意义吗?

oop - 如何在 DDD 中组合来自不同限界上下文的数据

javascript - 对于每个...in 循环未运行 : syntax error missing (

javascript - 使用 node.js 加载 tensorflow.js 时出错

ios - 静态变量如何在实例方法中工作 - 单例