Maison > interface Web > js tutoriel > le corps du texte

Une nouvelle façon de créer des objets javascript Compétences Object.create()_javascript

WBOY
Libérer: 2016-05-16 15:22:53
original
1311 Les gens l'ont consulté

Qu'est-ce que Object.create() ?
Object.create(proto [, PropertiesObject ]) est une nouvelle méthode de création d'objet proposée dans E5. Le premier paramètre est le prototype à hériter. S'il ne s'agit pas d'une sous-fonction, vous pouvez passer un null. paramètre Le paramètre est le descripteur d'attribut de l'objet. Ce paramètre est facultatif.
Par exemple :

function Car (desc) {
  this.desc = desc;
  this.color = "red";
}
 
Car.prototype = {
  getInfo: function() {
   return 'A ' + this.color + ' ' + this.desc + '.';
  }
};
//instantiate object using the constructor function
var car = Object.create(Car.prototype);
car.color = "blue";
alert(car.getInfo());

Copier après la connexion

Le résultat est :Un bleu indéfini.

1. Explication détaillée des paramètres PropertiesObject  : (la valeur par défaut est false)
Attributs des données :

  • inscriptible : peut-il être écrit arbitrairement
  • configurable : s'il peut être supprimé et s'il peut être modifié
  • énumérable : peut-il être énuméré en utilisant for dans
  • valeur : valeur

Accéder aux propriétés :

  • get() : accès
  • set() : Ensemble

2. Exemple : Il suffit de regarder l'exemple pour savoir comment l'utiliser.

<!DOCTYPE html>
<html>
<head>
  <title>yupeng's document </title>
  <meta charset="utf-8"/>
</head>
<body>
  <script type="text/javascript">

    var obj = {

      a:function(){
        console.log(100)
      },
      b:function(){
        console.log(200)
      },
      c:function(){
        console.log(300)
      }

    }

    var newObj = {};

    newObj = Object.create(obj,{
      t1:{
        value:'yupeng',
        writable:true
      },
      bar: {
        configurable: false,
        get: function() { return bar; },
        set: function(value) { bar=value }
      }
      
    })

    console.log(newObj.a());
    console.log(newObj.t1);
    newObj.t1='yupeng1'
    console.log(newObj.t1);
    newObj.bar=201;
    console.log(newObj.bar)
    
    function Parent() { }
    var parent = new Parent();
    var child = Object.create(parent, {
       dataDescriptor: {
        value: "This property uses this string as its value.",
        writable: true,
        enumerable: true
       },
       accessorDescriptor: {
        get: function () { return "I am returning: " + accessorDescriptor; },
        set: function (val) { accessorDescriptor = val; },
        configurable: true
       }
      });

    child.accessorDescriptor = 'YUPENG';
    console.log(child.accessorDescriptor);



    var Car2 = function(){
      this.name = 'aaaaaa'
    } //this is an empty object, like {}
    Car2.prototype = {
     getInfo: function() {
      return 'A ' + this.color + ' ' + this.desc + '.';
     }
    };

    var newCar = new Car2();
     
    var car2 = Object.create(newCar, {
     //value properties
     color:  { writable: true, configurable:true, value: 'red' },
     //concrete desc value
     rawDesc: { writable: true, configurable:true, value: 'Porsche boxter' },
     // data properties (assigned using getters and setters)
     desc: { 
      configurable:true, 
      get: function ()   { return this.rawDesc.toUpperCase(); },
      set: function (value) { this.rawDesc = value.toLowerCase(); } 
     }
    }); 
    car2.color = 'blue';
    console.log(car2.getInfo());
    car2.desc = "XXXXXXXX";
    console.log(car2.getInfo());
    console.log(car2.name);



  </script>
</body>
</html>

Copier après la connexion

Le résultat est :
100
ouais
yupeng1
201
Je reviens : YUPENG
Une PORSCHE BOXTER bleue
. Un XXXXXXXX bleu
aaaaaa

Ce qui précède est une introduction détaillée à Object.create(), une nouvelle méthode de création d'objets en JavaScript. J'espère qu'elle sera utile à l'apprentissage de chacun.

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal