10 / 10 / 2
Регистрация: 12.04.2011
Сообщений: 323
1

Не работает наследование классов

20.08.2013, 20:29. Показов 884. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Все сделал вроде по инструкции. Упростил до нельзя и все равно не работает. В общем код вот.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function extend(Child, Parent) {
    var F = function() { };
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.superclass = Parent.prototype;
}
 
function al () {
    this.func = (function(){
        alert('al');
    })
}
 
function ol () {
 
}
extend(ol, al);
 
var test = new ol ();
test.func();
Не вылезает алерт хотя вроде все сделано так как сказано тут http://javascript.ru/tutorial/... iya-extend

Что не так? Спасибо

PS если метод func засунуть в ol то все хорошо а вот из базового класса на получается вызвать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2013, 20:29
Ответы с готовыми решениями:

Наследование классов JavaScript
Написать класс Cat, который наследуется от класcа Animal. Класс Animal имеет метод getName (name...

Наследование классов. Не работает вывод площади
Не выводит площадь треугольника. От линии наследуется треугольник. Код прилагается ...

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

Заменить наследование классов на наследование интерфейсов
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int...

5
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
20.08.2013, 20:54 2
Вам для начала нужно разобратся что делает эта функция.
Javascript
1
2
3
4
5
6
7
function extend(Child, Parent) {
    var F = function() { };
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.superclass = Parent.prototype;
}

Javascript
1
  F.prototype = Parent.prototype
-это значить ,что наследование идет свойств и методов, которые в прототипе класса Parent,не внутри самого класса.



Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function extend(Child, Parent) {
    var F = function() { };
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.superclass = Parent.prototype;
}
 
function al () {
    this.func = function(){
        alert('al');
    }
}
 al.prototype.func2=function(){
     
     alert('al');
 }
function ol () {}
extend(ol, al);
 
var test = new ol ();
//test.func();-такого метода не будет
test.func2()//Будет работать.
1
10 / 10 / 2
Регистрация: 12.04.2011
Сообщений: 323
20.08.2013, 22:34  [ТС] 3
Спасибо.

В догонку еще вопрос

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var al = {
    test : (function(){
        alert('test123');
    }),
 
    edit : {
        func : (function(p){
            this.test();
        })
    }
}
 
 
al.edit.func();
Вот если хочу именно таким образом сделать, как быть? Пробовал с parentNode баловаться, неполучилось

Т.е. по сути вопрос состоит в том как обратится к методам вышестоящих классов скажем так
0
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
21.08.2013, 16:02 4
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var a1 = {
    test : function(){
        alert('test123');
    },
 
    edit : {
 
        func : function(p){
            //console.log(this);
            a1.test();
        }
    }
}
//console.log(a1);
a1.edit.func();
1
10 / 10 / 2
Регистрация: 12.04.2011
Сообщений: 323
21.08.2013, 16:09  [ТС] 5
Цитата Сообщение от koza4ok Посмотреть сообщение
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var a1 = {
    test : function(){
        alert('test123');
    },
 
    edit : {
 
        func : function(p){
            //console.log(this);
            a1.test();
        }
    }
}
//console.log(a1);
a1.edit.func();
Не мне так нельзя, в будущем это класс будет который будет наследоваться и соответственно имя объекта будет постоянно разное
0
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
21.08.2013, 20:20 6
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Your(){
 
var self=this//доступ к this внутри функций 
this.test=function(){
    alert('test123');
}
this.edit = {
    bram:100,
    func : function(){
      alert(self.edit.bram)//100
      self.test();
    }        
}
}
var object=new Your;
object.edit.func();
1
21.08.2013, 20:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2013, 20:20
Помогаю со студенческими работами здесь

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include "stdafx.h" class A //Создаем...

наследование классов
Здарова, народ! :D Вот сижу и пытаюсь сделать задание из книги по которой "учимся программировать...

Наследование классов
Доброго времени суток. Обращаюсь за помощью к Вам. Язык С++ стал изучать недавно и столкнулся вот с...

Наследование классов
Здравствуйте всем! Классы и наследования еще не изучил а задали решить задачу. Просьба может у...

наследование классов
При попытке сделать в main так: B_tree bt; bt.add_node(bt.get_root(), p, 4);...

Наследование классов в С++
Наследование классов в С++ Здравствуйте, нужна помощь в написании программы, может кто - нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru