私人对象没有设置数据
问题描述:
嗨我想在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());
答
_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中并不总是正确的,但是因为你刚开始时应该这样想,如果你将一个函数作为变量传递给另一个函数然后调用它,那么情况就不会如此)。
因为您将值赋给'that._data',但是您正在从'_data'中读取它。 – Thomas
感谢我与JavaScript新,这仍然让我有点困惑。 – Muffin
你想要建立什么?当我使用链接列表时,在此列表上执行的操作通常是特定的,我停止尝试实现任何通用LL,或者向节点添加任何逻辑。它通常是使用LL的代码,也就是在我的实现中管理和修改节点。 – Thomas