Say I have a function that I would like reuse as a method on a couple objects in order to add data to those objects.
function addToObject(data) {
for (var d in data) {
if (data.hasOwnProperty(d)) {
this[d] = data[d];
}
}
}
myObjOne = {
add: addToObject
};
myObjTwo = {
add: addToObject
};
My goal here was to be able to call myObjOne.add(myData)
where myData
is an object that I would like to add to myObjOne
and be able to replicate this functionality on myObjTwo
.
My issue is that using this
within addToObject
gives me:
this[d] = data[d];
^ Possible strict violation.
in jshint.
Why is this?
The docs say the warning happens when:
you use
this
in a non-constructor function. If you forget to use thenew
keyword when calling a constructor function,this
will be bound unexpectedly to the global object in non-strict mode, but will be undefined in strict mode.
Use validethis:true
in a pragma comment:
function addToObject(data) {
'use strict';
var d;
for (d in data) {
if (data.hasOwnProperty(d)) {
/* jshint: validthis:true */
this[d] = data[d];
}
}
}
References
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.