0

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

例如:

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

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

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

4

1 回答 1

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上下文的需要;

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

于 2013-02-16T12:30:20.580 回答