Maison interface Web js tutoriel javascript 面向对象编程 聊聊对象的事_js面向对象

javascript 面向对象编程 聊聊对象的事_js面向对象

May 16, 2016 pm 06:46 PM
面向对象

先看一下JSON(javascript object notation)对象,JSON是一种脚本操作时常用的数据交换格式对象,相对于XML来说JSON是一种比较轻量级的格式,在一些intelligence的IDE中还可以方便的通过点操作JSON对象中的成员。

      JSON是一种键/值对方式来描述内部成员的格式,其内部成员可以是几乎任何一种类型的对象,当然也可以是方法、类、数组,也可以是另外一个JSON对象。

    <SPAN class=kwrd>var</SPAN> student = {
Copier après la connexion
      Name: <SPAN class=str>"张三"</SPAN>,
Copier après la connexion
      Age: 20,
Copier après la connexion
      Hobby: <SPAN class=str>"读书"</SPAN>,
Copier après la connexion
      Books: [
Copier après la connexion
        {
Copier après la connexion
Copier après la connexion
Copier après la connexion
          BookName : <SPAN class=str>"C#"</SPAN> ,
Copier après la connexion
          Price : 70
Copier après la connexion
Copier après la connexion
        },
Copier après la connexion
Copier après la connexion
        {
Copier après la connexion
Copier après la connexion
Copier après la connexion
          BookName : <SPAN class=str>"Java"</SPAN> ,
Copier après la connexion
          Price : 70
Copier après la connexion
Copier après la connexion
        },
Copier après la connexion
Copier après la connexion
        {
Copier après la connexion
Copier après la connexion
Copier après la connexion
          BookName : <SPAN class=str>"Javascript"</SPAN> ,
Copier après la connexion
          Price : 80
Copier après la connexion
        }
Copier après la connexion
      ]
Copier après la connexion
    };
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

上面代码用JSON对象描述了一个学生的信息,他有姓名、年龄、爱好、书集等。在访问该学生对象时,可以通过student变量来操作学生的信息。

    <SPAN class=kwrd>var</SPAN> stuInfo = <SPAN class=str>"姓名:"</SPAN> + student.Name +
Copier après la connexion
           <SPAN class=str>",年龄:"</SPAN> + student.Age +
Copier après la connexion
<SPAN class=str>           ",爱好:"</SPAN> + student.Hobby +
Copier après la connexion
           <SPAN class=str>",拥有的书:"</SPAN> +
Copier après la connexion
                      student.Books[0].BookName + <SPAN class=str>"、"</SPAN> +
Copier après la connexion
           student.Books[1].BookName + <SPAN class=str>"、"</SPAN> +
Copier après la connexion
                      student.Books[2].BookName;
Copier après la connexion
     alert(stuInfo);
Copier après la connexion

这样的操作方式风格和C#也非常相像。以上的代码是静态的构造出了学生对象,学生对象的结构就确定了。在其它的编程语言中一般对象结构一旦确定就不能很方便的进行修改,但是在javascript中的对象结构也可以方便的进行改动。下面为student对象添加一个Introduce方法来做自我介绍。

    student.Introduce = <SPAN class=kwrd>function</SPAN>() {
Copier après la connexion
      <SPAN class=kwrd>var</SPAN> stuInfo = <SPAN class=str>"姓名:"</SPAN> + <SPAN class=kwrd>this</SPAN>.Name +
Copier après la connexion
             <SPAN class=str>",年龄:"</SPAN> + <SPAN class=kwrd>this</SPAN>.Age +
Copier après la connexion
             <SPAN class=str>",爱好:"</SPAN> + <SPAN class=kwrd>this</SPAN>.Hobby +
Copier après la connexion
             <SPAN class=str>",拥有的书:"</SPAN> +
Copier après la connexion
             <SPAN class=kwrd>this</SPAN>.Books[0].BookName + <SPAN class=str>"、"</SPAN> +
Copier après la connexion
             <SPAN class=kwrd>this</SPAN>.Books[1].BookName + <SPAN class=str>"、"</SPAN> +
Copier après la connexion
             <SPAN class=kwrd>this</SPAN>.Books[2].BookName;
Copier après la connexion
      alert(stuInfo)
Copier après la connexion
    };
Copier après la connexion
    student.Introduce();
Copier après la connexion
Copier après la connexion

student对象原来并没有Introduce方法,第一次为student.Introduce赋值会在student对象中创建一个新的成员,后面如果再为student.Introduce赋值则会覆盖上一次所赋的值。当然我们这的值是一个function。也可以用类似索引的方式来添加成员。

    student[<SPAN class=str>"Introduce"</SPAN>] = <SPAN class=kwrd>function</SPAN>() {
Copier après la connexion
     ……
Copier après la connexion
    };
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 
Copier après la connexion
    student.Introduce();
Copier après la connexion
Copier après la connexion

当然添加的成员也可以删除掉。删除掉之后则成为undefined,再访问该成员时则不支持。

    delete student.Introduce;
Copier après la connexion
    student.Introduce();
Copier après la connexion
 
Copier après la connexion
Copier après la connexion

image

javascript是弱类型的语言,有的时候即使有IDE的辅助也不能很清楚知道当前所操作对象的成员,可能会需要对当前对象的属性进行查询,这时候我们可以使用for循环来完成。

    <SPAN class=kwrd>for</SPAN> (<SPAN class=kwrd>var</SPAN> key <SPAN class=kwrd>in</SPAN> student) {
Copier après la connexion
      document.write(key + <SPAN class=str>" : "</SPAN> + student[key] + <SPAN class=str>"<br />"</SPAN>);
Copier après la connexion
    };
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

image

对student对象进行遍历时,是对student的成员进行遍历,这里的key则对应student对象中的每一个成员属性名称。student[key]则是对student某个成员进行访问。如果想调用student的Introduce方法也可以用索引的方式,student[“Introduce”]()。

上面简单的聊了聊JSON对象,总的来说JSON是很方便的数据打包方式。javascript中的其它的对象,不论是浏览器对象,还是自定义类型所创建的对象或者是数组等等,它们也都具有JSON对象类似的操作方式。我们可以直接用索引的方式为window添加成员,我们也可以为数组添加字符串形式的下标把它当成Hashtable来操作。

    window[<SPAN class=str>"Hi"</SPAN>] = <SPAN class=kwrd>function</SPAN>() {
Copier après la connexion
      alert(<SPAN class=str>"helloworld!"</SPAN>);
Copier après la connexion
    };
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    window[<SPAN class=str>"Hi"</SPAN>]();
Copier après la connexion
 
Copier après la connexion
Copier après la connexion
    <SPAN class=kwrd>var</SPAN> array = [];
Copier après la connexion
    array[<SPAN class=str>"一"</SPAN>] = <SPAN class=str>"A"</SPAN>;
Copier après la connexion
    array[<SPAN class=str>"二"</SPAN>] = <SPAN class=str>"B"</SPAN>;
Copier après la connexion
    array[<SPAN class=str>"三"</SPAN>] = <SPAN class=str>"C"</SPAN>;
Copier après la connexion
    array[<SPAN class=str>"四"</SPAN>] = <SPAN class=str>"D"</SPAN>;
Copier après la connexion
    alert(array[<SPAN class=str>"一"</SPAN>] + array[<SPAN class=str>"二"</SPAN>] + array[<SPAN class=str>"三"</SPAN>] + array[<SPAN class=str>"四"</SPAN>]);
Copier après la connexion

      把数组当成Hashtable来操作时,要注意,并非是为数组添加数组元素,而是在数组对象中添加新的属性成员。而且如果for(var key in array)循环遍历数组对象的话,key得到的却不是array对象的属性名称,而是数组元素的索引号。

下一次聊聊function。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter une programmation événementielle orientée objet à l'aide du langage Go Comment implémenter une programmation événementielle orientée objet à l'aide du langage Go Jul 20, 2023 pm 10:36 PM

Comment utiliser le langage Go pour implémenter une programmation événementielle orientée objet Introduction : Le paradigme de programmation orientée objet est largement utilisé dans le développement de logiciels, et la programmation événementielle est un modèle de programmation courant qui réalise le flux du programme à travers le déclenchement et le traitement de contrôle des événements. Cet article présentera comment implémenter une programmation événementielle orientée objet à l'aide du langage Go et fournira des exemples de code. 1. Le concept de programmation événementielle La programmation événementielle est un modèle de programmation basé sur des événements et des messages, qui transfère le contrôle du flux du programme au déclenchement et au traitement des événements. en mode événementiel

Quelle est l'importance de l'annotation @JsonIdentityInfo utilisant Jackson en Java ? Quelle est l'importance de l'annotation @JsonIdentityInfo utilisant Jackson en Java ? Sep 23, 2023 am 09:37 AM

L'annotation @JsonIdentityInfo est utilisée lorsqu'un objet a une relation parent-enfant dans la bibliothèque Jackson. L'annotation @JsonIdentityInfo est utilisée pour indiquer l'identité de l'objet lors de la sérialisation et de la désérialisation. ObjectIdGenerators.PropertyGenerator est une classe d'espace réservé abstraite utilisée pour représenter les situations dans lesquelles l'identifiant d'objet à utiliser provient d'une propriété POJO. Syntaxe@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Explorez la programmation orientée objet dans Go Explorez la programmation orientée objet dans Go Apr 04, 2024 am 10:39 AM

Le langage Go prend en charge la programmation orientée objet via la définition de type et l'association de méthodes. Il ne prend pas en charge l'héritage traditionnel, mais est mis en œuvre par composition. Les interfaces assurent la cohérence entre les types et permettent de définir des méthodes abstraites. Des cas pratiques montrent comment utiliser la POO pour gérer les informations client, notamment la création, l'obtention, la mise à jour et la suppression d'opérations client.

Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Jun 05, 2024 pm 09:39 PM

Les meilleures pratiques de POO en PHP incluent les conventions de dénomination, les interfaces et les classes abstraites, l'héritage et le polymorphisme, ainsi que l'injection de dépendances. Les cas pratiques incluent : l'utilisation du mode entrepôt pour gérer les données et l'utilisation du mode stratégie pour mettre en œuvre le tri.

Analyse du modèle Flyweight dans la programmation orientée objet PHP Analyse du modèle Flyweight dans la programmation orientée objet PHP Aug 14, 2023 pm 05:25 PM

Analyse du modèle Flyweight dans la programmation orientée objet PHP Dans la programmation orientée objet, le modèle de conception est une méthode de conception logicielle couramment utilisée, qui peut améliorer la lisibilité, la maintenabilité et l'évolutivité du code. Le modèle Flyweight est l’un des modèles de conception qui réduit la surcharge de mémoire en partageant des objets. Cet article explique comment utiliser le mode poids mouche en PHP pour améliorer les performances du programme. Qu’est-ce que le mode poids mouche ? Le modèle de poids mouche est un modèle de conception structurelle dont le but est de partager le même objet entre différents objets.

Analyse des fonctionnalités orientées objet du langage Go Analyse des fonctionnalités orientées objet du langage Go Apr 04, 2024 am 11:18 AM

Le langage Go prend en charge la programmation orientée objet, définissant des objets via des structures, définissant des méthodes à l'aide de récepteurs de pointeurs et implémentant le polymorphisme via des interfaces. Les fonctionnalités orientées objet assurent la réutilisation, la maintenabilité et l'encapsulation du code dans le langage Go, mais il existe également des limitations telles que le manque de concepts traditionnels de classes et d'héritage et de conversions de signatures de méthodes.

Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Mar 19, 2024 pm 02:51 PM

Il n'y a pas de concept de classe au sens traditionnel dans Golang (langage Go), mais il fournit un type de données appelé structure, à travers lequel des fonctionnalités orientées objet similaires aux classes peuvent être obtenues. Dans cet article, nous expliquerons comment utiliser les structures pour implémenter des fonctionnalités orientées objet et fournirons des exemples de code concrets. Définition et utilisation des structures Examinons d'abord la définition et l'utilisation des structures. Dans Golang, les structures peuvent être définies via le mot-clé type, puis utilisées si nécessaire. Les structures peuvent contenir des attributs

Partage d'expérience en développement C# : programmation orientée objet et principes de conception Partage d'expérience en développement C# : programmation orientée objet et principes de conception Nov 22, 2023 am 08:18 AM

C# (CSharp) est un langage de programmation orienté objet puissant et populaire, largement utilisé dans le domaine du développement de logiciels. Au cours du processus de développement C#, il est très important de comprendre les concepts de base et les principes de conception de la programmation orientée objet (POO). La programmation orientée objet est un paradigme de programmation qui résume les éléments du monde réel en objets et implémente des fonctions système via des interactions entre objets. En C#, les classes sont les éléments de base de la programmation orientée objet et sont utilisées pour définir les propriétés et le comportement des objets. Lors du développement de C#, il existe plusieurs principes de conception importants

See all articles