Здравствуйте !
Заранее извиняюсь за столь странную реализацию, но я эксперементировал !
$O = Object;
$c = console;
function F(){
var that = this;
this.a = 10;
var A = this.a;
return function(){
$c.log(($O.getPrototypeOf(that) === F.prototype));
$c.log(($O.getPrototypeOf(this)));
$c.log(A);
};
};
var b = new F();
b(); // true
// [ Object Window ]
// 10
$c.log(window.a); // undefined
$c.log(b.a); // undefined
Во первых, для меня было странным то, что при вызове конструкции
new F( )
не создался объект, ну в принципи я допустил, что в переменную
b
записалась возвращаемая из функции
F( )
функция, НО вся загвоздка в том, где создалась переменная
A
??? Если
typeof(b) === "function" - true
, в
window.a
и в
b.a
её собственно нету, тогда где она, в каком она находится объекте? Т.к. в теле возвращаемой функции её значение очень даже доступно, но где тот объект, свойством которого она является? И как получить к нему доступ? Буду очень признателен за ответ, особенно с подробностями, как это можно вычислить, т.к. кроме
typeof( )
и обращения к свойствам объекта в теле функции через
console.log( )
у меня нет никаких знаний! Спасибо!