Инстанцирование переменной с объектом превращает объект в функцию, затем члены данных объектов возвращают неопределенный - PullRequest
0 голосов
/ 13 июня 2018
var a = [function (){this.af = "DDS"}]
var b  = a[0] 
a[0] = new a[0]
console.log(typeof a[0], a[0].af, typeof b, b.af)

Вывод: объектная функция DDS не определена

Почему b имеет значение, отличное от a [0]?Почему b.af возвращает неопределенное значение, когда [0] .af возвращает «DDS»?

1 Ответ

0 голосов
/ 13 июня 2018

Чтобы устранить путаницу, мы можем попробовать шаг за шагом console.log, чтобы узнать, что произошло.

var a = [function (){this.af = "DDS"}]; // a is an array with function declaration as first element
var b  = a[0]; //b is now a function declaration. **Without running nor executing it**
a[0] = new a[0] //By running new a[0] we are creating an instance and 
                //we replaced with the first element of array

console.log(typeof a[0], a[0].af, typeof b, b.af)

a[0] is now an instance //{af: 'DDS'}
a[0].af === 'DDS'
b is still a function declaration
b.af will be undefined because b doesn't have a property `af`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...