2014-01-16 4 views
3

У меня есть класс учетной записи в javascript. Это мой родительский класс. депозит и деньги - дети. все эти классы находятся во внешних файлах javascript. в calsses является:Наследование с javascript

function account(accountNum, type) 
{ 
    this.accountNum = accountNum; 
    this.type = type; 
} 

function depositAccount(accountNum,type, balance, credit) 
{ 


    this.balance = balance; 
    this.credit = credit; 
    account.call(this, accountNum,type); 
}; 


function savingAccount(accountNum,type, amount, yearlyPrime) 
{ 

    this.amount = amount; 
    this.yearlyPrime = yearlyPrime; 
    account.call(this, accountNum, type); 
}; 

В моей HTML-странице У меня есть еще один сценарий, и я пытаюсь инициализировать депозитный счет, то есть я хочу, чтобы создать экземпляр счета Чила депозитного счета. Я получаю несогласованную ошибку для метода вызова в классе учетной записи.

Могу ли я получить помощь? Что я делаю не так? HTML-скрипт:

<script> 
var account = new account(232, "young"); 
var deposit = new depositaccount(232, "young", 1000, 2555); 
</script> 
+1

Не уверен, что вы сделали опечатку здесь, но не должны ли вторая 'новая учетная запись()' быть 'new depositAccount()'? С кодом, который вы предоставили, вы передаете слишком много аргументов в противном случае. –

+0

Это была опечатка. По-прежнему нет. – user2674835

ответ

4
var account = new account(232, "young"); 

Вы заменяете функцию account с объектом account функции.

Предложение:

Сво конвенции, которые JavaScript программисты следуют, используя начальные заглавные буквы для имен функций.

+0

Я не могу поверить, что все было так просто! Спасибо ! – user2674835

+1

@ user2674835 Если этот ответ поможет вам, не забудьте отметить его как принятый. –

+0

Буду, через 3 минуты :) – user2674835

0

Вы можете использовать подмешать образец здесь, это действительно полезный шаблон дизайна для таких проблем, как у вас.

EDIT: Forget mixin, это сработает, но по-другому, вот более близкое совпадение с вашей проблемой с дополнительным классом.

например.

var Account = function(accountNum, type) { 
    this.accountNum = accountNum; 
    this.type = type; 
} 

var DepositAccount = function(accountNum, balance, credit) { 
    Account.call(this, accountNum, 'deposit'); 
    this.balance = balance; 
    this.credit = credit; 
}; 

DepositAccount.prototype = Object.create(Account.prototype); 
var myAccount = new DepositAccount('12345', '100.00', '10'); 
+0

Я не понимаю, что вы предлагаете – user2674835

+0

Позвольте мне обновить пример, это не лучший –

Смежные вопросы