命名内置对象的自定义字段而不会发生冲突

时间:2013-02-16 12:21:38

标签: javascript naming-conventions

我想知道,是否有一些标准方法可以在JavaScript中命名内置对象的自定义字段,以避免与标准字段发生任何冲突?

例如:

var xhr = new XMLHttpRequest();
xhr.thisFieldIsNotGoingToBeUsed = 'by XHR internals but is used by the app';

例如,在事件中反转查找对象父项而不使用循环并将this对象与每个成员进行比较可能很有用。

HTML中有data-个属性,但我无法找到任何等效的JavaScript。

1 个答案:

答案 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在不同的范围内定义),您应该考虑修改代码以允许您传递必要的变量需要为了你的工作。