[英]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.