В этой статье анализируется использование прототипа прототипа JavaScript. Поделитесь этим для вашей ссылки. Конкретный анализ заключается в следующем:
Скопируйте код следующим образом: function shape () {
this.name = 'shape';
this.ToString = function () {
вернуть это. name;
}
}
функция twodshape () {
this.name = '2d форма';
}
Функциональный треугольник (сторона, высота) {
this.name = 'triangle';
this.side = сторона;
this.height = высота;
this.getarea = function () {
вернуть это.side*this.height/2;
};
}
/* наследование */
Twodshape.prototype = new Shape ();
Triangle.prototype = new TwodShape ();
Когда мы полностью переписываем свойство прототипа объекта, он иногда оказывает определенное негативное влияние на свойство конструктора объекта.
Поэтому после того, как мы завершим соответствующую настройку отношений наследования, это очень хорошая привычка соответствующим образом сбросить атрибуты этих объектов. Как показано ниже:
Кода -копия выглядит следующим образом: twodshape.prototype.constructor = twodshape;
Triangle.prototype.constructor = Triangle;
переписать:
Скопируйте код следующим образом: function shape () {}
Shape.prototype.name = 'shape';
Shape.prototype.tostring = function () {
вернуть это. name;
}
Функция twodshape () {}
Twodshape.prototype = new Shape ();
Twodshape.prototype.constructor = twodshape;
Twodshape.prototype.name = '2d Shape';
Функциональный треугольник (сторона, высота) {
this.side = сторона;
this.height = высота;
}
Triangle.prototype = новый Twodshape;
Triangle.prototype.constructor = Triangle;
Triangle.prototype.name = 'triangle';
Triangle.prototype.getarea = function () {
вернуть это.side*this.height/2;
}
Перепишите снова (справочный проход вместо прохода значения):
Скопируйте код следующим образом: function shape () {}
Shape.prototype.name = 'shape';
Shape.prototype.tostring = function () {
вернуть это. name;
}
Функция twodshape () {}
Twodshape.prototype = shape.prototype;
Twodshape.prototype.constructor = twodshape;
Twodshape.prototype.name = '2d Shape';
Функциональный треугольник (сторона, высота) {
this.side = сторона;
this.height = высота;
}
Triangle.prototype = TwodShape.Prototype;
Triangle.prototype.constructor = Triangle;
Triangle.prototype.name = 'triangle';
Triangle.prototype.getarea = function () {
вернуть это.side*this.height/2;
}
Хотя эффективность повышается, такой метод имеет побочный эффект, поскольку он является передачей ссылки, а не прохождение значений, поэтому затронуто значение имени в «родительском объекте».
Дочерний объект и родительский объект указывают на тот же объект. Следовательно, как только дочерний объект изменит свой прототип, родительский объект также будет изменен немедленно.
Перепишите снова (с помощью временного конструктора):
Скопируйте код следующим образом: function shape () {}
Shape.prototype.name = 'shape';
Shape.prototype.tostring = function () {
вернуть это. name;
}
Функция twodshape () {}
var f = function () {}
F.prototype = shape.prototype;
Twodshape.prototype = new f ();
Twodshape.prototype.constructor = twodshape;
Twodshape.prototype.name = '2d Shape';
Функциональный треугольник (сторона, высота) {
this.side = сторона;
this.height = высота;
}
F.prototype = twodshape.prototype;
Triangle.prototype = new f ();
Triangle.prototype.constructor = Triangle;
Triangle.prototype.name = 'triangle';
Triangle.prototype.getarea = function () {
вернуть это.side*this.height/2;
}
Хотя эффективность повышается, такой метод имеет побочный эффект, поскольку он является передачей ссылки, а не прохождение значений, поэтому затронуто значение имени в «родительском объекте».
Дочерний объект и родительский объект указывают на тот же объект. Следовательно, как только дочерний объект выравнивает прототип и изменяет его, родительский объект также будет изменен немедленно.
Я надеюсь, что эта статья будет полезна для каждого программирования JavaScript.