Как новый экземпляр объекта может также быть функцией конструктора

#arrays #function #object #constructor #new-operator

Вопрос:

Я изо всех сил пытаюсь понять эту концепцию. Если объект массива является новым экземпляром объекта объекта, то как он может также быть конструктором. Если мы создадим собственные конструкторы, у новых экземпляров не будет собственных конструкторов, они будут просто новыми экземплярами созданного вами конструктора

  var Person = function (name, age) {
 this.name = name;
 this.age = age;

 }

 var kevin = new Person (“kevin”, 35)
 

Теперь я, конечно, не смогу использовать переменную kevin в качестве функции конструктора. Это просто новый экземпляр конструктора личности.

Итак, если массив является новым экземпляром объекта Object, то как он также может быть функцией-конструктором для всех его создаваемых экземпляров ! Спасибо

Ответ №1:

    var Person = function () {

   }

  Person.prototype.saySomething= function () {

        alert("say something");
  }


 new Person (  Dave = function () {  // this is a new instance of a Person object                                        passing in Dave

})

 Dave.prototype.sayNothing = function () {

      alert(" ");

 }

 var sportsman = new Dave();  // this is a new instance ofthe Dave object 
 sportsman.sayNothing(); // this works
 sportsman.saySomething();// this doesnt , however 
 sportsman.hasOwnProperty("blue") // returns false so this works 
 

Вот что я имею в виду, вот как это должно работать в моей голове у спортсмена,говорит, что что-то не работает, заявляет, что это не функция, но я думал, что он распознает прототип функции человека и заберет его оттуда, используя цепочку прототипов. Тем не менее, он по-прежнему выбирает методы из прототипа объекта объекта, почему он не распознает прототип человека, если Дейв-новый экземпляр человека, а спортсмен-новый экземпляр Дейва, спасибо