JavaScript

Объясните код. Что происходит на каждой строчке. Поэтапно.

function Car()
{
this.vinCode = "someVinCode";
}
Car.prototype.setVin = function(my_vin)
{
this.vinCode = my;
alert("Vin code:" + this.vinCode);
}
var c1 = new Car();
c1.setVin("vin1");
var c2 = new Car();
c2.setVin("vin2");
NN
Nik Novik
386
Нечего не делает рушит код так как корява написана с ошибками

Ма
Максим
73 678
Лучший ответ
йопта Car()
{
тырыпыры. vinCode с%ка "someVinCode" нах%й
есть
Car.проточелик. setVin с%ка йопта (my_vin)
{
тырыпыры. vinCode с%ка my нах%й
шухер ("Vin code:" + тырыпыры. vinCode) нах%й
есть
гыы c1 с%ка гыйбать Car() нах%й
c1.setVin("vin1") нах%й
гыы c2 с%ка гыйбать Car() нах%й
c2.setVin("vin2") нах%й
Сергей Гурин
Сергей Гурин
9 407
вам что содержимое learn.javascript.ru пересказать в двух словах :) ?
вот лучше оригинал посмотрите
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes

короче:
создана функция Car(), которая в дальнейшем задумана для использования в качестве конструктора нового типа Car.
для типа Car объявлен метод setVin(arg)
Далее создаются объекты этого типа и демонстрируется работа этого метода
Ой, я даже не знаю этот язык. Знаю только паскаль. И htp
Stariy Dobriy Volk
Stariy Dobriy Volk
577
1. Создаётся функция конструктор Car для последующего создания объектов, в данном конструкторе задаётся свойство vinCode, причём указанное свойство с помощью точечной нотации прикрепляется к ключевому слову this это делается для того, что бы все объекты созданные с помощью конструктора Car имели своё независимое свойство vinCode, при этом изначально данному свойству присваивается строка "someVinCode", т. е. все экземпляры конструкотора изначально имеют данное свойств в котором содержится указанная строка.
Конечный код по свойству выглядит так this.vinCode = "someVinCode";
2. Car.prototype.setVin = function(my_vin)
{
this.vinCode = my;
alert("Vin code:" + this.vinCode);
}
2.1 у функции Car есть объект прототип, хранится в свойстве prototype функции, так как прототип является объектом то у него могут быть методы и свойства которые являются едиными (общими) для всех вновь созданных объектов с помощью конструктора Car
2.2. в прототипе создаётся метод Car.prototype.setVin которому присваивается анонимная функция, принимающая в качестве параметра данные которые присваиваются свойству vinCode объекта экземпляра в отношении которого был вызван данный метод
ВНИМАНИЕ у вас опечатка this.vinCode = my; а должно быть this.vinCode = my_vin; так как это локальная переменная из параметра функции в которой хранятся указанные вами данные

3. ВЕСЬ СМЫСЛ КОДА в п. 2.2 который показывает, взаимосвязь прототипа и ключевого слова this, т. е. метод находящейся в прототипе применяется для всех объектов экземпляров конструктора Car, однако так как в данном методе используется this то следовательно изменения будут применяться только к тому экземпляру объекта который вызвал данный метод
3.1. это подверждает этот код
var c1 = new Car();
вызовите в консоле с1.vinCode и отобразится "someVinCode"
c1.setVin("vin1"); => вызовите в консоле с1.vinCode и отобразится "vin1"
var c2 = new Car();
вызовите в консоле с2.vinCode и отобразится "someVinCode"
c2.setVin("vin2"); => вызовите в консоле с2.vinCode и отобразится "vin2"

т. е. вы увидите что сначала было общее значение которое презаписалось для каждого экземпляра независимо с помощью общего метода находящегося в прототипе.
Nik Novik спасибо

Похожие вопросы