我是JavaScript中面向对象编程的新手。我不确定以下程序有什么问题:
function Sample() {
var data = "one";
var getData = function () {
return data;
};
this.getter = function () {
getData();
};
}
var s = new Sample;
alert(s.getter()); // alerts undefined
上述程序无法正常工作,但以下程序可以:
function sample() {
var data = "one";
var getData = function () {
return data;
};
this.getter = function () {
return getData();
};
}
var s = new Sample;
alert(s.getter()); // alerts "one"
为什么会这样?
答案 0 :(得分:5)
您需要使用,因为您的getter
方法也没有向调用者返回任何值。
在您的getter
中,您正在调用getData
方法,该方法返回data
的值,但该值不会被发送回getter
的来电者
this.getter = getData
或
this.getter = function () {return getData();}
答案 1 :(得分:1)
在第一个代码示例中,您没有返回任何值 - 只需调用函数getData
。返回值不会'进一步'传播(不会作为getter
函数的返回值进一步传递。
// Here you are just calling getData
this.getter = function () {getData();}
// Here you are returning the value returned by getData function
this.getter = function () {return getData();}
答案 2 :(得分:0)
答案仅在您的代码中。你没有在第一种情况下回来。如果你不回来,你将如何保持警惕。你的第二个片段修复了这个问题。
答案 3 :(得分:0)
您没有从getter
的{{1}} sample
返回任何内容。这就是你获得undefined