您好我试图在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());
答案 0 :(得分:0)
_data
与that._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;不是这样的。)