В этой статье описывается использование прототипа в JS. Поделитесь этим для вашей ссылки. Конкретный анализ заключается в следующем:
Фототип в JS является сложной частью JS, чтобы понять
Эта статья основана на следующих моментах знаний:
1 режим проектирования прототипа
В .net вы можете использовать Clone () для реализации метода прототипа
Основная идея метода прототипа заключается в том, что теперь есть класс А. Я хочу создать класс B. Этот класс прототип и может быть расширен. Мы называем прототип B A.
2 Методы JavaScript можно разделить на три категории:
Метод класса А.
B объект метод
C Метод прототипа
Примеры следующие:
Функция (имя (name) {this.name = name; 1 = Новые люди («Винты»);3 obj1.func.call (OBJ) Метод
Это означает рассматривать OBJ как obj1 и назвать метод фанка
Хорошо, следующие проблемы решены один за другим:
Что означает прототип?
Каждый объект в Javascript имеет атрибут прототипа.
A.Prototype = new B ();
Понимание прототипа не следует путать с наследством. Прототип A является примером B. можно понять, что клонирует все методы и свойства в B. A может использовать методы и свойства B. Что здесь подчеркивается, так это клонирование, а не наследство. Это может произойти: прототип A является экземпляром B, а прототип B также является экземпляром A.
Давайте посмотрим на пример эксперимента:
Function baseclass () {this.showmsg = function () {alert ("baseclass :: showmsg");Сначала мы определяем класс BaseClass, а затем мы хотим определить ExtentClass, но мы намерены использовать экземпляр BaseClass в качестве прототипа для клона ExtendClass также содержит метод объекта ShowMSG.
extendclass.prototype = new Baseclass () можно прочитать как: extendClass создается с помощью экземпляра BaseClass в качестве клонирования прототипа.
Тогда будет вопрос, что произойдет, если сам ExtendClass содержит метод с тем же именем, что и метод BaseClass?
Вот расширенный эксперимент 2:
Функция baseclass () {this.showmsg = function () {alert ("baseclass :: showmsg"); Ass :: ShowmsgЭкспериментальные данные: когда работает функция, она сначала перейдет к функции в онтологии для поиска. Или можно понять, что прототип не будет клонировать функции того же имени.
Тогда будет еще один новый вопрос:
Что если я хочу использовать экземпляр экземпляра ExtendClass, чтобы вызвать метод объекта BaseClass ShowmsG?
Ответ - использовать звонок:
extendClass.prototype = new Baseclass (); var exanter = new extendclass (); var baseinstance = new baseclass (); baseinstance.showmsg.call (экземпляр); // show baseclass :: showmsgg
Здесь baseinstance.showmsg.call (экземпляр);
ОК, кто -то может спросить здесь, почему не baseclass.showmsg.call (экземпляр);
Это разница между методами объекта и методами класса.
Наконец, если следующий код четко понят, то то, что говорится в этой статье, уже понято:
<script type = "text/javascript"> function baseclass () {this.showmsg = function () {alert ("baseclass :: showmsg"); ass () {this.showmsg = function () {alert ("extendClass :: showmsg"); }} extendClass.showmsg = function () {alert ("extendClass :: showmsg static")} extendclass.prototype = new Baseclass (); var exante = new extendclass (); exants.showmsg (); // show extendclass :: showmsgbaseclass.showmsg.call (экземпляр); baseInstance = new BaseClass (); BaseInstance.showmsg.call (экземпляр); // Показать Baseclass :: showmsg </script>Я надеюсь, что эта статья будет полезна для каждого программирования JavaScript.