私有对象没有设置数据

时间:2016-07-27 18:19:47

标签: javascript linked-list

您好我试图在Javascript中实现LinkedList。当我为我的节点分配一个值时,它似乎不会在我使用我的getter时存储它。例如:

var Node =function() {

    var _data;
    var _next ={};
    var that = this;

    that.getData = function() {
        return _data;
    };

    that.setData = function(data) {
        that._data = data;
    };

    that.getNext = function() {
        return _next;
    };

    that.setNext = function(next) {
        that._next = next;
    };

    return that;

};

无法使用:

var nodeObj = new Node();
nodeObj.setData("hello");
console.log(nodeObj.getData());

1 个答案:

答案 0 :(得分:0)

_datathat._data不同,您必须这样做:

that.getData = function() {
    return that._data;
};

或者你可以这样做:

that.setData = function(data) {
    _data = data;
};

第二种方法的好处是你要模拟一个私有变量(因为你不能在第二种情况下做nodeObj._data但你可以在第一种情况下)

也不需要var that = this;,在这种情况下您只需执行this._data

对于您的情况,您可以假设,如果您正在调用yourObject.someFunction()之类的函数,那么在someFunction内,this的值等于yourObject。 (并且这在javascript中并不总是如此,但是既然你已经开始了,你现在就应该这样思考。如果你把一个函数作为一个变量传递给另一个函数,然后调用它,那么就不会#&# 39;不是这样的。)