title: JavaScript Inheritance and Object Programming
author:  Martin Rinehart 
description: Martin Rinehart, a self-confessed JavaScript lover, set aside work on his five-volume frontend-engineering textbook project for long enough to write this small book on JavaScript inheritance. He wanted to eliminate some of the massive confusion surrounding this important subject. (Veterans of classical OOP backgrounds, and Martin is one, have to unlearn much of what they think they "know." Veteran JavaScripters have to stop abusing the prototype chain.) Martin is the author of over a dozen books on programming, and of the JSWindows system that brings a windowing UI to browser-based applications.
zlib_text: 1)},removeAttr:function(e){return
  this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return
  x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return
  this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var
  t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return
  this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?("
  "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+"
  ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var
  t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof
  e&&e;if(x.isFunction(e))return
  this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?("
  "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf("
  "+i+" ")>