Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在函数中使用'this'会给我一个'quot;可能的严格违反”;在jshint中?_Javascript_This_Jshint - Fatal编程技术网

Javascript 为什么在函数中使用'this'会给我一个'quot;可能的严格违反”;在jshint中?

Javascript 为什么在函数中使用'this'会给我一个'quot;可能的严格违反”;在jshint中?,javascript,this,jshint,Javascript,This,Jshint,假设我有一个函数,我想在一对对象上作为方法重用,以便向这些对象添加数据 function addToObject(data) { for (var d in data) { if (data.hasOwnProperty(d)) { this[d] = data[d]; } } } myObjOne = { add: addToObject }; myObjTwo = { add: addToObject }; 我的目标是能够调用myObjOne

假设我有一个函数,我想在一对对象上作为方法重用,以便向这些对象添加数据

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
的对象,并且能够在
myObjOne
上复制此功能

我的问题是,在
addToObject
中使用
this
会让我:

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


为什么会这样?

医生说,警告发生在:

在非构造函数中使用
。如果在调用构造函数时忘记使用
new
关键字,
将在非严格模式下意外绑定到全局对象,但在严格模式下未定义

在pragma注释中使用
validethis:true

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


这是一个要求很多的问题。这是jshint发出的错误警告。只要正确地调用
addToObject()
(适当地设置
this
),就没有严格的违规行为。很高兴知道。有没有办法抑制这个警告?我相信
jsHint
有办法禁用这个警告。啊哈,但是这个警告是什么意思呢?文档说警告发生在:
你在非构造函数中使用它时。如果在调用构造函数时忘记使用
new
关键字,
将意外绑定到中的全局对象,但在严格模式下将是
未定义的