¿Cuál es el libro mejor y más fácil de entender OOP en JavaScript?

Si quieres entender la POO, no deberías mirar JavaScript. En primer lugar, JavaScript es un lenguaje basura. Pero dejando eso de lado, JavaScript no es un lenguaje OOP. Se basa en dos conceptos principales: lambdas y prototipos de objetos.

Los prototipos de objetos NO son la forma de hacer POO en nuestra industria. La OOP basada en clases es el paradigma más utilizado en todo el mundo. Es la base de casi todos los principales lenguajes de programación: Java, Python, C ++, C #, PHP, Perl, Ruby, Objective-C, Swift. (Algunos de ellos también son lenguajes de procedimiento ).

Los prototipos de objetos son tan útiles que solo otro lenguaje notable en los últimos 25 años ha adoptado esta característica: Lua. Popular, no lo es.

ES6 introdujo “clases” en JavaScript, pero es solo azúcar sintáctico sobre prototipos de objetos. No está engañando a nadie.

Si quieres aprender OOP de la mejor manera, solo tienes una opción: Smalltalk. Vea la respuesta de Richard Kenneth Eng a ¿Por qué debo aprender a programar y qué idioma debo aprender?

Para obtener más información, lea Cómo aprender Smalltalk puede mejorar sus habilidades como programador.

Existe un sitio web interesante mantenido por la organización Mozilla: Introducción de objetos JavaScript

Y un comentario re. si JavaScript está o no orientado a objetos:

Por lo que vale, no soy un gran admirador de OOP: la mayor parte del desarrollo que he realizado implica almacenar datos en bases de datos y mantener las funciones y la canalización de procesamiento bastante separadas de los datos, algo opuesto a OOP. Uno no diseña en términos de objetos, diseña una base de datos, funciones que operan en la base de datos, flujos de datos a través de secuencias de funciones y flujos de control que invocan varias funciones.

Pero las GUI, y las GUI web en particular, son un caldero diferente de peces. Uno pasa casi todo el tiempo jugando con objetos, específicamente el DOM y varios objetos de visualización. La mayor parte de lo que uno está haciendo es manipulaciones conducidas por eventos a uno o más objetos. Y hay mucha modularidad y encapsulación. Un entorno donde el pensamiento OO se aplica muy bien.

Y JavaScript está bastante orientado a objetos a este respecto. Todo lo que está haciendo es interactuar con las propiedades de los objetos e invocar métodos de objetos.

Recomendaría Javascript Eloquent de Marijn Haverbeke.

Aquí hay un enlace para la edición en línea: JavaScript elocuente

Tiene excelentes ejemplos y acertijos al final de cada capítulo.