JavaScript:原型(prototype)函数中的私有(private)变量

标签 javascript prototype

我使用原型(prototype)函数是因为当“类”被多次实例化时它们应该具有更好的性能。此外,并非所有变量都应该可以从外部访问,因此它们是通过 var 在“类”内部定义的,因此在闭包空间之外的任何地方都无法访问它们。

现在我有一个简单的示例,其中定义了一个“私有(private)”变量并为其定义了 set 和 get 函数。

示例:

function Test() {
    var hello = "org";

    this._get = function (value) {
          hello = value;
    }
    this._set = function (value) {            
         return hello;            
    }
}


var test = new Test();
console.log(test._get());
test._set("new");
console.log(test._get());

fiddler :http://jsfiddle.net/LdwuS/

现在我想对原型(prototype)做同样的事情,但 get 函数总是返回未定义!

示例:

function Test() {
    var hello = "org";
}

Test.prototype.set = function (value) {
    return hello;
}
Test.prototype.get = function (value) {
    hello = value;
}

var test = new Test();
console.log(test.get());
test.set("new");

fiddler :http://jsfiddle.net/rK22m/

我做错了什么或者这是不可能的吗? console.log(test.get());

最佳答案

与原型(prototype)对象关联的函数对对象的访问方式与任何其他函数完全相同。此外,与其他函数一样,它们无法访问构造函数被调用时存在的局部变量。

关于JavaScript:原型(prototype)函数中的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998107/

相关文章:

javascript - bootstrap 3-所见即所得编辑器对象始终未定义

javascript - jquery 使用 attr() 获取 href 不起作用

javascript - Angular 5 动态添加和删除组件实例

javascript - THREE.Camera.prototype.lookAt</<() - </< 是什么意思?

javascript - Array 对象与 Object 是否不同(认为两者的 typeof 返回相同的值)?

c - 如何调用函数并使用其结果?

javascript - 如何在 React.js 中添加延迟?

javascript - 获取 CSS 背景图片的像素颜色

javascript - 覆盖 prototype.toString() 在 OOP 函数中不起作用

javascript - 了解 Javascript 调用函数与返回函数但稍后执行函数之间的区别