我想知道,是否有一些标准方法可以在JavaScript中命名内置对象的自定义字段,以避免与标准字段发生任何冲突?
例如:
var xhr = new XMLHttpRequest();
xhr.thisFieldIsNotGoingToBeUsed = 'by XHR internals but is used by the app';
例如,在事件中反转查找对象父项而不使用循环并将this
对象与每个成员进行比较可能很有用。
HTML中有data-
个属性,但我无法找到任何等效的JavaScript。
答案 0 :(得分:2)
经验法则是不修改你不拥有的东西。相反,请考虑使用此方法;
var myObj = {};
var xhr = new XMLHttpRequest();
myObj.xhr = xhr;
myObj.customProperty = 4;
myObj.customFunc = function () {
// use this.xhr
}
// Now pass myObj around instead, you have a reference to xhr (myObj.xhr)
// and your customProperty (myObj.customProperty).
由于闭包在JavaScript中的工作原理,您还应该有权在定义onreadystatechange
函数时访问范围内的变量,这再次完全不需要this
上下文; < / p>
var xhr = new XMLHttpRequest();
var something = function () {
// I have access to "xhr" because of closures.
};
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
// I still have access to "something" here because of closures;
}
}
// xhr.open && send.
...即使您没有关闭(例如,onreadystatechange
在不同的范围内定义),您应该考虑修改代码以允许您传递必要的变量需要为了你的工作。