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

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


我通过queryselector()获得了一个JavaScript对象。
然后,我将自己的名为get的属性添加到它本身就是一个对象。
我想在调用嵌套对象时获得对父JavaScript对象的访问权,我的意思是elemelem.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()而不使用全局变量。

最佳答案

使用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没有文本内容。

关于javascript - 如何访问嵌套对象中的父对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57035459/

10-12 07:34
查看更多