Javascript从构造函数内部的函数调用原型(prototype)函数

标签 javascript prototype javascript-objects

这个问题我找了好久。找不到任何答案来满足我的问题。我正在尝试的是:

function myClass() {
    function privateFunction () {
        publicFunction();    //Error
    }
}

myClass.prototype.publicFunction = function() {
    this.variable = 1;
}
myClass.prototype.publicFunction2= function() {
    return this.variable;
}

这给我错误。我不明白真正的问题是什么:

我尝试过的:

this.publicFunction();

然后:

myClass.publicFunction();

然后:

myClass.prototype.publicFunction();

这有效,但它会覆盖每个对象。在不同的 JS 对象中表现得好像它是静态的。

最佳答案

您没有正确声明原型(prototype)功能。在调用函数 publicFunction 时,您还缺少 this 关键字。

私有(private)函数 (privateFunction) 不是类的成员,因此如果要将其作为函数调用,则必须为其指定上下文。

function myClass() {
    function privateFunction () {
        this.publicFunction();
    }

    privateFunction.call(this);
    document.write(this.publicFunction2()); // show value in Stackoverflow snippet
}

myClass.prototype.publicFunction = function() {
    this.variable = 1;
}

myClass.prototype.publicFunction2 = function() {
    return this.variable;
}

var myClassPrototype = new myClass();

关于Javascript从构造函数内部的函数调用原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366219/

相关文章:

javascript __proto__ 不会产生与 "prototype"继承相同的效果

Javascript 不调用原型(prototype)方法

javascript - 我如何在foreach中的append jquery中选择选项

javascript - 如何将 Javascript 中的对象数组解构为 ES6 中的两个预定义变量?

javascript - 有人能告诉我这段代码是如何工作的吗?

Javascript - 迭代对象的属性并更改它们

javascript - 如何将图像src设置为空?

javascript - 使用另一个数组删除/过滤对象数组

javascript - 如何检查已加载的图像是否已加载到 JavaScript 中?

javascript - 如何动态更新我的对象?