Como detectar o mecanismo de renderização do navegador em javascrip

Li um livro chamado 'Javascript profissional para desenvolvedores da Web 2ª edição' e declara que esse código pode detectar o mecanismo de renderização do navegador:

    <script type="text/javascript">
  var client = function(){
     var engine = {
        ie: 0,
        gecko: 0,
        webkit: 0,
        khtml: 0,
        opera: 0,

        ver: null
     };

     return {
        engine : engine  
     };

  }();

  if(client.engine.ie){
      alert("This is internet explorer");
  }else if(client.engine.gecko > 1.5){
      if(client.engine.ver == "1.8.1"){
          alert("This is gecko rendering browser");
      }
  }else if(client.engine.webkit){
        alert("This is web kit");
  }else if(client.engine.khtml){
       alert("This is khtml");
  }else{
       alert("none of the above");
  }
</script>

mas parece que não funciona, então como esse código funciona para detectar o mecanismo de renderização do navegado

questionAnswers(3)

yourAnswerToTheQuestion