什么是我的代码错误 - 面向对象的JavaScript

时间:2013-07-08 11:01:37

标签: javascript

我是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 个答案:

答案 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

的原因