【发布时间】:2013-08-02 14:45:54
【问题描述】:
我正在使用原型函数,因为当“类”被多次实例化时,它们应该具有更好的性能。此外,并非所有变量都应该可供外部访问,因此它们是通过var 在“类”内定义的,因此在闭包空间之外的任何地方都无法访问它们。
现在我有了这个简单的例子,我在其中定义了一个“私有”变量并为它定义了 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());
提琴手:http://jsfiddle.net/LdwuS/
现在我想对原型做同样的事情,但 get 函数总是返回 undefined!
例子:
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");
提琴手:http://jsfiddle.net/rK22m/
我做错了什么还是不可能? console.log(test.get());
【问题讨论】:
-
无法从函数外部定义的函数访问函数内部定义的变量。这包括
.prototype上的功能。 -
...在第二个示例中,您的
set和get行为颠倒了。 -
ECMAScript 6 可能会定义对属性的“键控”访问,您可以在其中需要键来访问某些属性,提供对象上的私有成员之类的东西。
-
这已经是可能的(只需使用一些随机生成的字符串作为键),但是将可以静态强制执行的东西带到运行时是荒谬的
标签: javascript prototype