当前位置:  开发笔记 > 编程语言 > 正文

从javascript对象访问父级的父级

如何解决《从javascript对象访问父级的父级》经验,为你挑选了3个好方法。

就像是

var life= {
        users : {
             guys : function(){ this.SOMETHING.mameAndDestroy(this.girls); },
             girls : function(){ this.SOMETHING.kiss(this.boys); },
        },
        mameAndDestroy : function(group){ },
        kiss : function(group){ }
};

这个.SOMETHING是我想象的格式,但它可能不是.什么会退回到对象的父级?



1> jazkat..:

我只是添加了第一个函数

parentThis = this;

并在子功能中使用parentThis.为什么?因为在JavaScript中,对象很软.可以通过简单的赋值将新成员添加到软对象中(不像是经典对象很难的Java.将新成员添加到硬对象的唯一方法是创建一个新类)更多相关内容:http ://www.crockford.com/javascript/inheritance.html

而且最后你不必杀死或破坏对象.为什么我在这里找到:http://bytes.com/topic/javascript/answers/152552-javascript-destroy-object

希望这可以帮助


在这里超级晚了,但有人可以用代码示例详细说明吗?我没有看到这对OP的代码有什么帮助.
我很惊讶这个答案是最受欢迎的答案.谁是"第一职能"?当对象是一个函数时(如tntu答案),它可以工作,但是当对象是OP的问题中的静态对象时,它不起作用!parentThis将返回`Window`对象

2> harley.333..:

JavaScript本身不提供此功能.我怀疑你甚至可以创建这种类型的功能.例如:

var Bobby = {name: "Bobby"};
var Dad = {name: "Dad", children: [ Bobby ]};
var Mom = {name: "Mom", children: [ Bobby ]};

鲍比属于谁?


这是与多个父母相关的异常比选择的答案更清楚的例子.

3> Shog9..:

在这种情况下,您可以使用life引用父对象.或者您可以life在users对象中存储引用.在语言中没有固定的parent可用对象,因为用户只是对对象的引用,并且可能有其他引用...

var death = { residents : life.users };
life.users.smallFurryCreaturesFromAlphaCentauri = { exist : function() {} };
// death.residents.smallFurryCreaturesFromAlphaCentauri now exists
//  - because life.users references the same object as death.residents!

您可能会发现使用以下内容很有帮助:

function addChild(ob, childName, childOb)
{
   ob[childName] = childOb;
   childOb.parent = ob;
}

var life= {
        mameAndDestroy : function(group){ },
        kiss : function(group){ }
};

addChild(life, 'users', {
   guys : function(){ this.parent.mameAndDestroy(this.girls); },
   girls : function(){ this.parent.kiss(this.boys); },
   });

// life.users.parent now exists and points to life

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有