如何访问对象中父对象的父对象

时间:2013-07-03 15:45:02

标签: javascript

嗨,大家好,我说我有这个:

function example()
{
   this.x = 0;
   this.y = 32;
   this.example2 = function()
   {

   }
}

我如何能够从example2中访问example.x / example.y?

我问,因为我正在创造我的第一个真实的' html5游戏,我计划拥有一个重要的游戏对象和模型'在那个对象内(玩家,敌人等)。除非有更好的方法做到这一点......我已经完成了工作原型,但它们都在一个文件中而且没有真正的结构化。

3 个答案:

答案 0 :(得分:1)

像这样:

function example()
{
   this.x = 0;
   this.y = 32;
   this.example2 = function()
   {
      console.log(this.x); // 0
   }
}

答案 1 :(得分:1)

如果您只反对计划拥有1个父级,则可以这样做:

function example() {
   this.x = 0;
   this.y = 32;
   this.example2 = new function() {
       this.parent = undefined;
   }
   this.example2.parent = this;
}

var firstobject = new example();

// Saving a reference to example2.
var example2Object = firstobject.example2;

// Because of parent variable, you can access example2 parent without needing to have the parent object in a variable.
console.log(example2Object.parent.x);
console.log(example2Object.parent.y);

有很多方法可以设置parent,这只是一个例子。

答案 2 :(得分:0)

如果您希望您的方法在隔离使用时仍然引用其原始对象,则需要一个闭包:

function example()
{
   this.x = 0;
   this.y = 32;

   this.example2 = proxy(this, function() {
       console.log(this.x);
   });
}

var x = new example(),
fn = x.example2; // isolate method

fn(); // this will still work

它正在使用此辅助函数将函数绑定到对象:

// helper function to bind fn to ctx (context)
function proxy(ctx, fn)
{
    return function() {
        return fn.apply(ctx, arguments);
    }
}