Если вы не в строгом режиме ES5, вы добавите функцию .clean()
к глобальному объекту.
Итак, просто позвонить clean('test');
действительно сработало бы здесь. Если вы хотите, чтобы это было так, как вы описали, вам нужно вернуть функции объект.
var someVariable = function() {
return {
clean: function(obj) {
alert(obj);
}
};
};
Если вы находитесь в строгом режиме ES5, этот код выдаст ошибку, поскольку this
будет привязан к null
. То, на что ссылается this context variable
, всегда зависит от того, как вызывается функция. В вашем случае, как описано, this
является либо window
, либо null
.
Это также будет работать, если вы вызовете свою функцию с помощью клавиатуры new
:
new someVariable().clean('test');
Это связано с тем, что new
делает функцию функцией-конструктором , а this
всегда привязывается к вновь созданному объекту внутри функции.