2012-02-24 53 views
1

鉴于此设置:有没有办法在JavaScript中检查父/调用对象?

var ObjectNamespace = {} 
var FunctionNamespace = function FunctionNamespace() {} 

ObjectNamespace.User = function() {} 
FunctionNamespace.User = function User() {} 

反正是有写namespace方法来完成这样的事情:

ObjectNamespace.User.namespace = function() { 
    return this.toString().match(/function *(\w+)/)[1] 
} 

ObjectNamespace.User.namespace() //=> "User" 

ObjectNamespace.User.namespace() //=> "ObjectNamespace.User" 
FunctionNamespace.User.namespace() //=> "FunctionNamespace.User" 

你可以做这样的事情得到的第一个节点

但我的问题是,有没有办法引用“父”对象,即对象User函数定义在(ObjectNamespace)?有些东西符合arguments.caller.callee。这样,你会得到这个:

ObjectNamespace.User.namespace() //=> "ObjectNamespace.User" 

任何想法?

回答

2

绝对不是。我们假设有,我们称之为*.parent。以下代码会做什么:

var apple = {}, banana = {}, lemon = {}; 
banana.friend = apple.friend = lemon; 

lemon.parent.otherThing = 6; 

console.log(apple.otherThing, banana.otherThing); 

// 6, undefined? 
// undefined, 6? 
// 6, 6? 

谁是lemon的父母?无论applebanana是,但是这没有任何意义......

而且,你的想法,而良好的,不会,如果你调用的命名空间功能断章取义的工作。

相关问题