Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / функционально наследование / 4 сообщений из 4, страница 1 из 1
26.11.2016, 22:43
    #39355200
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функционально наследование
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function Base(){
    var enableVar = true

  this.enable = function(){
      console.log("enable");
        enableVar = true;
  }
   this.disable = function(){
      console.log("disable");
        enableVar = true;
  }
}

function Child(){
    Base.call(this);
}

new Child().enable();



пишут, что так реализуется функциональное наследование.
Я как новичок не понял строки Base.call(this);

это ведь то же самое, что и
Код: javascript
1.
this.Base()



но такой вариант не работает. почему?
...
Рейтинг: 0 / 0
26.11.2016, 22:46
    #39355202
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функционально наследование
в интернетах пишут, что контекстом функции (this) является то, что до точки перед вызовом. то есть

this.Base() должно быть аналогично Base.call(this);
...
Рейтинг: 0 / 0
27.11.2016, 03:35
    #39355284
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функционально наследование
questioner,

this.Base не просто говорит что надо Base выполнить в контексте this, но и о том, что искать этот base именно в this надо (предполагая, что Base это метод/свойство this). Вот код и валится потому что поиск неудачен (ведь Base это метод глобального объекта а не this).

А вообще я при необходимости что-то от чего-то наследовать делаю приблизительно следующее (могут быть неточности, давно таким уже не занимался):
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
function A(){}
A.prototype = {};
A.prototype.create = function(param1, param2){/*bla-bla-bla*/ return this;}
A.prototype.customMethod = function(){/*bla-bla-bla*/}

function B(){}
B.prototype = new A();
B.prototype.create = function(param1){A.prototype.create.call(this, param1, 'default'); return this;}
B.prototype.customMethod = function(){/*bla-bla-bla*/}



Ну и вызов конструктора соответственно происходит следующим образом:
Код: javascript
1.
var b = (new B()).create();


может не так удобно как
Код: javascript
1.
var b = new B();


но зато "по фэншую" классического ООП :)
...
Рейтинг: 0 / 0
27.11.2016, 09:07
    #39355303
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функционально наследование
Програмёр,

прототипы в учебнике идут после функционального наследования , так что ТС и до них доберётся :)
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / функционально наследование / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]