почему instanceof возвращает false? - PullRequest
0 голосов
/ 30 ноября 2018

Это мой код

function Otaku (name, age) {

  this.name = name;
  this.age = age;

  this.habit = 'Games';
}

Otaku.prototype.strength = 60;
Otaku.prototype.sayYourName = function () {
  console.log('I am ' + this.name);
}


function newTest() {

  const obj = {}
  const ctu = [].shift.call(arguments)
  obj.__proto__ = ctu.prototype
  ctu.apply(obj, arguments)
  return obj
}
function objectFactory() {

  const obj = Object.create(null)
  Constructor = [].shift.call(arguments);
  obj.__proto__ = Constructor.prototype;
  Constructor.apply(obj, arguments);
  return obj;

};

let test = objectFactory(Otaku,'test1',11)
let test2 = newTest(Otaku,'test1',11 )

console.log(test.__proto__ === Otaku.prototype,  test instanceof Otaku, test.__proto__.Constructor)
console.log(test2.__proto__ === Otaku.prototype, test2 instanceof Otaku, test2.__proto__.Constructor)

Но результат неожиданно

true false undefined
true true undefined

Я думаю, что "test instanceof Otaku" должен возвращать TRUE, но результат равен FALSE, поэтому яСравните разницу между «test. proto » и «Otaku.prototype», результатом которых является ИСТИНА. Думаю, причина нулевая, но я не понимаю, мне нужна помощь

...