假设我有一个函数,我想将其重新用作一对对象的方法,以便向这些对象添加数据。
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
上复制此功能}。
我的问题是在this
中使用addToObject
给了我:
this[d] = data[d];
^ Possible strict violation.
在jshint中。
为什么会这样?
答案 0 :(得分:1)
文档说警告发生在:
您在非构造函数中使用
this
。如果在调用构造函数时忘记使用new
关键字,this
将在非严格模式下意外绑定到全局对象,但在严格模式下将未定义。
在编译指示评论中使用validethis:true
:
function addToObject(data) {
'use strict';
var d;
for (d in data) {
if (data.hasOwnProperty(d)) {
/* jshint: validthis:true */
this[d] = data[d];
}
}
}
<强>参考强>