3

我是 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"

为什么会这样?

4

4 回答 4

6

您需要使用,因为您的getter方法也没有向调用者返回任何值。

在您的 getter中,您正在调用getData返回值的方法,data但该值未发送回调用者getter

this.getter = getData

或者

this.getter = function () {return getData();}
于 2013-07-08T11:03:49.347 回答
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();} 
于 2013-07-08T11:07:05.073 回答
0

答案仅在您的代码中。在第一种情况下,您不会返回。如果您不返回,您将如何获得警报。你的第二个片段解决了这个问题。

于 2013-07-08T11:04:21.210 回答
0

您没有从 first getterof中返回任何内容sample。这就是为什么你得到undefined

于 2013-07-08T11:04:30.137 回答