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

时间:2019-07-15 07:56:15

标签: javascript

当我使用嵌套对象时,我正在寻找一种访问父对象的方法,这种情况很复杂,因此在这里我无法提供真实的示例。

我写了一个非常简单的示例,这是我的工作:

  1. 我通过queryselector()获得了一个JavaScript对象。
  2. 然后,我将名为get的自己的属性添加到它本身就是对象。
  3. 我想在调用嵌套对象时访问父JavaScript对象,我的意思是elem中的elem.get.text()是执行到text()函数内部的时间:

//***** Initialization:
var get = {
	text: function(){
	//Here I want to know what was the elem
	   return elem.textContent;
    },
    foo: function(){},
    bar:{
        text: function(){
         //And also here which is one level deeper
          return elem.textContent;
         }
    }
};
			
var elem = document.querySelector("#elem");
elem.get = Object.create(get);
//*****

function getText(e){
    var elem = e.target;
  alert(elem.get.text());
}
<input type="button" id="elem" onclick="getText(event)" value="Get Text"/>

我再次强调,这只是一个简单的示例,所以请不要批评我可以通过一种更简单的方法来获取输入文本。

实际上,我想知道如何在a中访问b时不使用全局变量而访问a.b()

1 个答案:

答案 0 :(得分:1)

使用elem创建新的get实例时,可以保存对Object.create的引用。

//***** Initialization:
var get = {
  text: function() {
    //Here I want to know what was the elem
    return this.elem.value; // use this.elem to access element
  },
  foo: function() {},
  bar: function() {}
};

var elem = document.querySelector("#elem");
elem.get = Object.create(get, {
  elem: { // keep current element ref
    value: elem
  }
});
//*****

function getText(e) {
  var elem = e.target;

  console.log(elem.get.text());
}
<input type="button" id="elem" onclick="getText(event)" value="Get Text" />

我还更新了text以使用value代替textContent进行演示,因为input没有文本内容。