I have this code...
function a(options) {
for (var item in options) {
if ( ! options.hasOwnProperty(item)) {
continue;
}
t
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
?
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);