簡體   English   中英

為什么在函數jshint中使用`this`會給我一個“可能的嚴格違反”?

[英]Why does using `this` within function give me a “Possible strict violation” in jshint?

假設我有一個函數,希望將其作為方法用於幾個對象,以便將數據添加到這些對象。

function addToObject(data) {
  for (var d in data) {
    if (data.hasOwnProperty(d)) {
      this[d] = data[d];
    }
  }
}

myObjOne = {
  add: addToObject
};

myObjTwo = {
  add: addToObject
};

我的目標是能夠調用myObjOne.add(myData) ,其中myData是要添加到myObjOne的對象,並能夠在myObjTwo上復制此功能。

我的問題是在addToObject中使用this可以給我:

this[d] = data[d];
^ Possible strict violation.

在jshint中。

為什么是這樣?

文檔說警告發生在以下情況:

您可以在非構造函數中使用this 如果您在調用構造函數時忘記使用new關鍵字, this它將在非嚴格模式下意外綁定到全局對象,但在嚴格模式下將未定義。

validethis:true注釋中使用validethis:true

function addToObject(data) {
    'use strict';
    var d;
    for (d in data) {
        if (data.hasOwnProperty(d)) {
            /* jshint: validthis:true */
            this[d] = data[d];
        }
    }
}

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM