JavaScript est un langage de programmation orienté objet (POO), mais il est différent des langages orientés objet ordinaires tels que C++ et Java. Par exemple, il n'y a pas de notion de classe en JavaScript. Par conséquent, lorsque vous écrivez du code JavaScript selon la pensée POO, cela semble toujours un peu contre nature.
En fait, JavaScript est un langage basé sur les objets. On peut considérer que presque tout en JavaScript est un objet. Dans les tutoriels et exemples précédents, même si nous avons à peine évoqué la notion d'objets, après avoir étudié ce chapitre, vous saurez qu'ils sont en réalité basés sur des objets.
Qu'est-ce qu'un objet ?
Un objet est une collection de propriétés et de méthodes. Utilisons un exemple simple pour vous aider à comprendre ce qu'est un objet et certains concepts liés aux objets. Par exemple, une personne est un objet, alors :
Attributs et méthodes : Une personne a un nom, une taille, un poids et d'autres caractéristiques. Ces caractéristiques sont appelées les attributs de l'objet. Les gens peuvent parler et marcher. Nous appelons cette capacité la méthode d'un objet.
Méthodes privées et méthodes publiques : Après avoir appris un langage de programmation, une personne peut écrire des programmes, et après avoir appris une langue étrangère, elle peut travailler comme traducteur. Cette capacité que possèdent seuls les objets individuels est appelée la méthode privée. de l'objet. Au contraire, les méthodes ci-dessus dont tout le monde dispose, comme parler et marcher, sont appelées méthodes publiques de l'objet.
Encapsulation : les deux mêmes personnes ont appris un langage de programmation. Bien qu'elles puissent toutes deux écrire des programmes, il existe souvent des différences dans la façon d'écrire des programmes car ce sont deux objets différents. Certaines données et certains codes d'un objet peuvent être privés et inaccessibles au monde extérieur, c'est ce qu'on appelle l'encapsulation.
Héritage : L'héritage est un concept au sein des classes. L'héritage signifie qu'une sous-classe obtient les propriétés et les méthodes de la classe parent (à l'exception des propriétés et méthodes privées) en héritant (en étendant) de la classe parent. C'est comme un grand arbre, couche par couche grâce à l'héritage, rendant le programme final clair et puissant. Étant donné que le langage JavaScript n'a pas le concept de classes, il ne fournit pas directement de capacités d'héritage. Cependant, de nombreuses personnes et certains frameworks JavaScript tentent désormais de donner à JavaScript la possibilité d'hériter.
Polymorphisme : Le polymorphisme fait référence à la capacité de différentes choses à avoir différentes manifestations. Le mécanisme de polymorphisme permet à des objets ayant des structures internes différentes de partager la même interface externe, réduisant ainsi la complexité du code. Malheureusement, comme l'héritage, JavaScript ne prend pas en charge le polymorphisme, un concept très important en POO. Bien sûr, de nombreuses personnes et frameworks JavaScript tentent également d'implémenter indirectement le polymorphisme en JavaScript.
En raison de la longueur et de l'objectif de ce tutoriel, certains concepts de base sur les objets sont simplement décrits ici. La programmation orientée objet est un sujet spécialisé. Les étudiants intéressés peuvent lire d'autres ouvrages spécialisés sur la POO.
Accéder aux propriétés d'un objet
Les propriétés sont des valeurs associées à un objet.
La syntaxe pour accéder aux propriétés des objets est :
objectName.propertyName
Cet exemple utilise la propriété length de la chaîne objet. Obtenez la longueur d'une chaîne :
var message="Hello World!";
var x=message.length;
Une fois le code ci-dessus exécuté, la valeur de x sera :
12
Méthodes pour accéder aux objets
Les méthodes sont des actions qui peuvent être effectuées sur un objet.
Vous pouvez appeler des méthodes via la syntaxe suivante :
objectName.methodName()
Cet exemple utilise la méthode toUpperCase() de l'objet String . Convertissez le texte en majuscules :
var message="Bonjour tout le monde!";
var x=message.toUpperCase();
Après le code ci-dessus. exécuté , la valeur de >
Une fois que vous avez le constructeur d'objet, vous pouvez créer une nouvelle instance d'objet comme ceci :
var myFather=new person("John","Doe ", 50,"blue");var myMother=new person("Sally","Rally",48,"green");
Ajouter des propriétés aux objets JavaScript
Vous pouvez ajouter de nouvelles propriétés à un objet existant en attribuant une valeur à l'objet :
En supposant que personObj existe déjà, vous pouvez lui ajouter ces nouvelles propriétés : prénom , nom, âge et couleur des yeux :
person.firstname="John";person.lastname="Doe";person.age=30;
person.eyecolor ="blue ";
x=person.firstname;
TAprès l'exécution du code ci-dessus, la valeur de x sera :
John
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <script> function person(firstname,age){ this.firstname=firstname; this.age=age; } myFather=new person("John",50); document.write(myFather.firstname + " is " + myFather.age + " years old."); </script> </body> </html>Comme le montre l'exemple ci-dessus, nous définissons l'attribut de nom d'objet dans le constructeur et transmettons l'attribut de nom d'objet prototype Ajoutez une méthode showName() à l'attribut, et enfin instanciez un objet via le nouveau mot-clé.
Classes JavaScript
JavaScript est un langage orienté objet, mais JavaScript n'utilise pas de classes.
En JavaScript, les classes ne sont pas créées, ni les objets créés à partir de classes (comme dans d'autres langages orientés objet).
JavaScript est basé sur des prototypes et non sur des classes.
JavaScript for...in en boucle
L'instruction JavaScript for...in parcourt les propriétés d'un objet.
Syntaxe
pour (variable dans l'objet){Le code exécuté...}
Remarque : Le bloc de code dans la boucle for...in sera exécuté une fois pour chaque attribut.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script> // 定义构造函数,并设定一个属性 function Person(name) { this.name = name; } // 为 Person 增加一个方法 Person.prototype.showName = function() { alert("我叫" + this.name); }; // new 关键字实例化一个对象 var Tom = new Person("Tom"); // 运行该对象内的 showName() 方法 Tom.showName(); </script> </head> <body> </body> </html>