"Observable Pattern in JS"
Bootstrap 3.3.0 Snippet by govs

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="container"> <div class="row"> <h2>Create your snippet's HTML, CSS and Javascript in the editor tabs</h2> <div class="col-sm-6"> <pre>var Book = function (name, price){ var priceChanging = []; var priceChanged = []; this.name = function(val){ return name; } this.price = function(val){ debugger if(val !== undefined && val !==price){ for(var i= 0; i < priceChanging.length;i++){ if(!priceChanging[i](this,val)){ return price; } } price = val; } return price; }; this.onPriceChanging = function(callback){ priceChanging.push(callback); }; this.onPriceChanged = function(callback){ priceChanging.push(callback); }; }; var book = new Book('Javascript: the good parts',49.99); console.log('The name is: '+ book.name()); console.log('The price is: '+ book.price()); book.onPriceChanging(function(b,price){ if(price>100){ console.log('system Error, price gone high.'); return false; } return true; }); book.onPriceChanged(function(b){ console.log('the book price has changed to: $'+ b.price()); }) book.price(19.99); </pre> </div> </div> </div>
var Book = function (name, price){ var priceChanging = []; var priceChanged = []; this.name = function(val){ return name; } this.price = function(val){ debugger if(val !== undefined && val !==price){ for(var i= 0; i<priceChanging.length;i++){ if(!priceChanging[i](this,val)){ return price; } } price = val; } return price; }; this.onPriceChanging = function(callback){ priceChanging.push(callback); }; this.onPriceChanged = function(callback){ priceChanging.push(callback); }; }; var book = new Book('Javascript: the good parts',49.99); console.log('The name is: '+ book.name()); console.log('The price is: '+ book.price()); book.onPriceChanging(function(b,price){ if(price>100){ console.log('system Error, price gone high.'); return false; } return true; }); book.onPriceChanged(function(b){ console.log('the book price has changed to: $'+ b.price()); }) book.price(19.99);

Related: See More


Questions / Comments: