可能重复:
Javascript: Do I need to put this.var for every variable in an object?
我想在JavaScript中创建一个“类”,其他“类”应该继承。
因此,我使用原型对象添加了“公共方法”。
在这些方法中,我想访问我的类的私有属性。
好像我无法访问它们。我该怎么做呢?这是我的代码:
<!doctype html>
<html>
<head>
<title>OOP test</title>
<script>
var ParentClass = function(){
var data = [];
}
ParentClass.prototype.addData = function(somedata){
data.push(somedata); // ReferenceError: Can't find variable: data
}
var p = new ParentClass();
p.addData("foo");
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:2)
<head>
<title>OOP test</title>
<script>
var ParentClass = function(){
this.data = [];
}
ParentClass.prototype.addData = function(somedata){
this.data.push(somedata); // ReferenceError: Can't find variable: data
}
var p = new ParentClass();
p.addData("foo");
</script>
</head>
<body>
</body>
答案 1 :(得分:2)
没有公共或私有(甚至当你引用它们时),只有对象属性和变量。您无法访问不在范围内的变量。 .addData
方法的定义超出了data
变量的范围。
只要您有对象的引用,就可以访问对象属性,因此将其设为对象属性:
var ParentClass = function(){
this.data = [];
}
ParentClass.prototype.addData = function(somedata){
this.data.push(somedata);
}
答案 2 :(得分:0)
它抛出一个引用错误,因为变量'data'对'ParentClass'函数是'private'来模拟你可以使用闭包类型方法的函数。
var ParentClass = function(){
var data = [];
this.addData = function(somedata){
data.push(somedata); // Closure will have access to all variables in 'ParentClass'
}
}
然而,这将与您似乎希望实施的原型继承相关。