How Can I *unpack* An Object Into A Function's Scope?
I have this code... function a(options) { for (var item in options) { if ( ! options.hasOwnProperty(item)) { continue; } this[item] = options[ite
Solution 1:
If you want to put the properties of the object in the scope of the function, you can extend the scope by using with
:
function a(options) {
with(options) {
// properties of `options` are in the scope
alert(abc);
}
}
Disclaimer: Make sure you read the documentation and about disadvantages of with
. It should be avoided and is also kind of deprecated:
Using
with
is not recommended, and is forbidden in ECMAScript 5strict
mode. The recommended alternative is to assign the object whose properties you want to access to a temporary variable.
So the questions is why not stick with options
?
Solution 2:
You can access the function from inside itself using the callee property:
function a(options) {
var thiz = arguments.callee;
for (var item in options) {
if (!options.hasOwnProperty(item)) {
continue;
}
thiz[item] = options[item];
}
}
a({
'abc': 'def'
});
alert(a.abc);
Alternatively, you can set the scope when you call it:
function a(options) {
for (var item in options) {
if (!options.hasOwnProperty(item)) {
continue;
}
this[item] = options[item];
}
}
a.call(a, {
'abc': 'def'
});
alert(a.abc);
Post a Comment for "How Can I *unpack* An Object Into A Function's Scope?"