0 голосов
 
653 просмотра
11.04.2017 / 11:49  Askalite

Конструкторы в javascript

  1. function main(){
  2.     var c;
  3.     function init(c){
  4.         this.c=c;
  5.     }
  6. }
  7. var main = new main();
  8. main.init("строка");

Я всё правильно делаю?
12.04.2017 / 09:42  Ксакеп
А ты предварительно http://learn.javasript.ru/ читал?
Ответы
 
1 голос
 
# 11.04.2017 / 14:42  RblSb
Объявление
  1. function init(c) {
  2.   this.c = c;
  3. }
почти что равносильно
  1. var init = function(c) {
  2.   this.c = c;
  3. }
init будет переменной с значением функции, грубо говоря. А все что объявляется через var в фунции, является локальным/приватным, доступным только соседним локальным функциям (как локальные методы в других языках). var c и this.c - тоже разные переменные. В общем, можно описать это так:
  1. function Main() {
  2.   var c = "private";
  3.   this.c = "public";
  4.  
  5.   function init(newc) { //private
  6.     c = newc;
  7.     this.c = c;
  8.     alert(c);
  9.   }
  10.   this.init2 = function(c) { //public
  11.     init(c);
  12.   }
  13.   Main.prototype.init3 = function(c) { //public static
  14.     init(c);
  15.   }
  16. }
  17. var main = new Main();
  18. main.init2("строка");
  19. main.init3("строка2");

Неплохая статья по теме ооп/наследования в js:
http://popel-studio.com/blog/a...ie-v-javascript.html
Изм. RblSb от 11.04.2017 / 14:56
11.04.2017 / 16:50  Askalite
Значит надо убрать this? Хорошо.
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt