Javascript使用其属性从访问主对象
我有一个目标:Javascript使用其属性从访问主对象,javascript,Javascript,我有一个目标: var myObj = new function(){ this.dateInfo = "someinfo"; } 然后我有以下属性: myObj.add = function(){ console.log("Added"); } myObj.remove.item = function(key){ console.log("Item "+key+" removed."); } 问题在于: myObj.remove.undo = function(key
var myObj = new function(){
this.dateInfo = "someinfo";
}
然后我有以下属性:
myObj.add = function(){
console.log("Added");
}
myObj.remove.item = function(key){
console.log("Item "+key+" removed.");
}
问题在于:
myObj.remove.undo = function(key){
// here I want to use `myObj.add()` function, what should I do?
}
在上面(最后一个)函数中,我想使用myObj.add()
,我应该如何引用它?我知道这个
不起作用(从remove.undo()
内部)
我需要帮助。谢谢。这是可能的,因为您的myObj
是一个单例-只需直接使用它,您的函数将关闭myObj
变量:
myObj.remove.undo = function(key){
myObj.add(/*...*/);
}
还有第二种方法,它也依赖于myObj
是一个单例(尽管可以修改为支持多个对象):
不过,我还是不愿意。我想:
removietem
,removeUndo
等items
和undos
属性,这些属性是有问题的项和“undo”,并为它们提供add
和remove
方法(以及对它们的父对象的引用,就像我在上面使用remove
的方法一样)旁注:
var myObj = new function(){
this.dateInfo = "someinfo";
};
…是一种漫长而浪费的写作方式
var myObj = {
dateInfo: "someinfo"
};
第一种方法创建一个函数和一个附加对象,这两个对象都会毫无理由地扰乱内存(因为myObj通过其原型引用了这两个对象,所以JavaScript引擎必须将它们保留在内存中):
+-----------+
|myObj|
+-----------+ +-------------+
|_uuuproto_uuuu124;------+>|(对象)|
|日期信息|/+--------------++------------------+
+-----------+| | | | | | | | | |-->| Object.prototype|
||构造函数|--++------------------+
| +-------------+ |
| |
| | +------------+
|+-->(函数)|
| +------------+
|| | | | | | | | | | | | | |------>(省略,不相关)
||原型|--+
| +------------+ |
| |
+----------------------------------------+
第二种方法没有:
+-----------+
| myObj |
+-----------+ +------------------+
| __proto__ |--->| Object.prototype |
| dateInfo | +------------------+
+-----------+
+-----------+
|myObj|
+-----------+ +------------------+
|_uuproto_uuu124;-->| Object.prototype|
|日期信息|+------------------+
+-----------+
我建议您只需使用
removietem
,removeUndo
,等等,这将使一切变得更容易。由于这个
是动态的,当您有许多嵌套对象和函数时,很难跟踪它。
+-----------+
| myObj |
+-----------+ +-------------+
| __proto__ |----+>| (object) |
| dateInfo | / +-------------+ +------------------+
+-----------+ | | __proto__ |------>| Object.prototype |
| | constructor |---+ +------------------+
| +-------------+ |
| |
| | +------------+
| +-->| (function) |
| +------------+
| | __proto__ |---->(omitted, not relevant)
| | prototype |--+
| +------------+ |
| |
+----------------------------------------+
+-----------+
| myObj |
+-----------+ +------------------+
| __proto__ |--->| Object.prototype |
| dateInfo | +------------------+
+-----------+