当我使用嵌套对象时,我正在寻找一种访问父对象的方法,这种情况很复杂,因此在这里我无法提供真实的示例。
我写了一个非常简单的示例,这是我的工作:
get
的自己的属性添加到它本身就是对象。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()
。
答案 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
没有文本内容。