这是可能,因为你的myObj
是一个单独的 —只是用它直接,密切在myObj
变量的函数:
myObj.remove.undo = function(key){
myObj.add(/*...*/);
}
下面是第二种方式,这也依赖于myObj
是一个单身人士(虽然这可以被修改为支持多个对象):
myObj.add = function(){
console.log("Added");
};
myObj.remove = {
parent: myObj
};
myObj.remove.item = function(key){
console.log("Item "+key+" removed.");
};
myObj.remove.undo = function(key){
this.parent.add(/*...*/);
};
虽然,我再次“T。我倒是可以:
使用removeItem
,removeUndo
等作为elclanrs建议。
使用items
和undos
性能,这是该项目和“撤消” S的问题,并给他们add
和remove
方法(和它们的父对象的引用,我与上述remove
的方式。
旁注:
var myObj = new function(){
this.dateInfo = "someinfo";
};
...是一个漫长而wastef UL的方式来写
var myObj = {
dateInfo: "someinfo"
};
第一种方式创建了一个函数和一个额外的对象,这两个杂波内存没有很好的理由(为myObj
指他们两个,通过其原型,因此JavaScript引擎已保留在内存中):
+-----------+
| myObj |
+-----------+ +-------------+
| __proto__ |----+>| (object) |
| dateInfo | /+-------------+ +------------------+
+-----------+ | | __proto__ |------>| Object.prototype |
| | constructor |---+ +------------------+
| +-------------+ |
| |
| | +------------+
| +-->| (function) |
| +------------+
| | __proto__ |---->(omitted, not relevant)
| | prototype |--+
| +------------+ |
| |
+----------------------------------------+
第二条路并不:
+-----------+
| myObj |
+-----------+ +------------------+
| __proto__ |--->| Object.prototype |
| dateInfo | +------------------+
+-----------+
我建议你只需用'removeItem','removeUndo'等去,这会让一切更容易。由于'this'是动态的,所以当你有很多嵌套的对象和函数时很难跟踪它。 – elclanrs