Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- console.clear();
- var cl = function(text){ console.log(text); }
- function Sale(price){
- this.price = price || 100;
- }
- Sale.prototype.getPrice = function(){
- return this.price;
- }
- Sale.decorators = {};
- Sale.decorators.fedtax = {
- getPrice: function(){
- var price = this.uber.getPrice();
- price += price * 5/100;
- return price;
- }
- }
- Sale.decorators.quebec = {
- getPrice: function(){
- var price = this.uber.getPrice();
- price += price * 7/100;
- return price;
- }
- }
- Sale.decorators.money = {
- getPrice: function(){
- return "USD" + this.uber.getPrice().toFixed(2);
- }
- }
- Sale.prototype.decorate = function(decorator){
- var F = function(){},
- i,
- newObj,
- overrides = this.constructor.decorators[decorator];
- F.prototype = this;
- newObj = new F();
- newObj.uber = F.prototype;
- for (i in overrides){
- if (overrides.hasOwnProperty(i)){
- newObj[i] = overrides[i];
- }
- }
- return newObj;
- }
- var sale = new Sale(100);
- sale = sale.decorate("fedtax");
- sale = sale.decorate("quebec");
- sale = sale.decorate("money");
- sale.getPrice();
Advertisement
Add Comment
Please, Sign In to add comment