有没有办法在JavaScript中检查父/调用对象?
问题描述:
鉴于此设置:有没有办法在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"
任何想法?
答
绝对不是。我们假设有,我们称之为*.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
的父母?无论apple
和banana
是,但是这没有任何意义......
而且,你的想法,而良好的,不会,如果你调用的命名空间功能断章取义的工作。
答
曾经有__parent__
,但它已被删除。我不确定它是如何工作的,请参阅davins的回答。您可能还会看到Access parent's parent from javascript object。