2015-07-03 4 views
0

Ниже приведен рабочий пример, показывающий, как работает прототип Javascript. Поэтому из моего понимания просто экземпляр клиента унаследовал функцию прототипа Person.javascript прототипическое наследование путаницы

var Person = function (name) { 
 
    this.name = name; 
 
}; 
 
Person.prototype.getName = function() { 
 
    return this.name; 
 
}; 
 
var john = new Person("John"); 
 
alert(john.getName()); 
 
Person.prototype.sayMyName = function() { 
 
    alert('Hello, my name is ' + this.getName()); 
 
}; 
 
john.sayMyName(); 
 
var Customer = function (name) { 
 
    this.name = name; 
 
}; 
 
Customer.prototype = new Person(); 
 

 
var myCustomer = new Customer('Dream Inc.'); 
 
myCustomer.sayMyName(); 
 
Customer.prototype.setAmountDue = function (amountDue) { 
 
    this.amountDue = amountDue; 
 
}; 
 
Customer.prototype.getAmountDue = function() { 
 
    return this.amountDue; 
 
}; 
 
myCustomer.setAmountDue(2000); 
 
alert(myCustomer.getAmountDue());

Но одна вещь, ошибка меня в том, что почему автор делать прототип функции getAmountdue? он просто возвращает this.amountDue.

+1

Потому что он получил образование в качестве программиста на Java. Это метод [getter] (https://en.wikipedia.org/wiki/Mutator_method). – Bergi

+0

Я думаю, что трудно сказать, почему автор сделал это. Я рекомендую вам прочитать эту ссылку http://phrogz.net/JS/classes/OOPinJS2.html –

ответ

0

Я думаю, что проблема не связана с прототипным наследованием javascript.

Чтобы обернуть свойство в функцию return, можно абстрагировать реализацию.

Например, если ваш босс хочет, чтобы вы предоставили декорированный результат this.amountDue, вы можете просто изменить реализацию метода getAmountDue.

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