Heim >Web-Frontend >js-Tutorial >Sieben objektorientierte JS-Methoden zum Erstellen von Objekten

Sieben objektorientierte JS-Methoden zum Erstellen von Objekten

零到壹度
零到壹度Original
2018-03-22 16:31:061331Durchsuche

In diesem Artikel wird hauptsächlich die Erstellung von sieben objektorientierten JS-Objekten erläutert. Ich hoffe, dass er Ihnen helfen kann.

1. Factory-Muster
Da in ECMAScript keine Klassen erstellt werden können, haben Entwickler eine Funktion erfunden, um die Details der Objekterstellung mit einer bestimmten Schnittstelle zu kapseln:

function createPerson(name,age,job){
    var o = new Object();  
      o.name = name;  
      o.age = age;
      o.job = job;  
      o.sayName = function(){  
            alert(this.name);
    }; 
    return o;
}
var person1 = createPerson("Joy",29,"Software Engineer");
var person2 = createPerson("Greg",27,"Doctor");

2. Konstruktormuster

function Person(name,age,job){  
  this.name = name;  
   this.age = age;  
     this.job = job; 
        this.sayName = function(){   
             alert(this.name);
    }
}
var person1 = new Person("Joy",29,"Software Engineer");
var person2 = new Person("Greg",27,"Doctor");
alert(person1.sayName === person2.sayName); //false.每个Person实例都会创建一个功能相同的Function实例

3. Prototypmuster
Jede erstellte Funktion verfügt über ein Prototypattribut, bei dem es sich um einen Zeiger handelt, der auf ein Objekt zeigt, und dieses Objekt enthält Eigenschaften und Methoden, die von einem bestimmten Typ gemeinsam genutzt werden können. Der Vorteil der Verwendung eines Prototypobjekts besteht darin, dass alle Objektinstanzen die darin enthaltenen Eigenschaften und Methoden gemeinsam nutzen können

function Person(){}
    Person.prototype.name = "Joy";
    Person.prototype.age = 29;
    Person.prototype.job = "Software Engineer";
    Person.prototype..sayName = function(){ 
  alert(this.name)
};
  var person1 = new Person();


Viertens: Verwenden Sie das Konstruktormuster und das Prototypmuster in Kombination

 function Person(name,age,job){  
    this.name = name;   
     this.age = age;    
     this.job = job;
}
   Person.prototype = { 
      sayName:function(){     
         alert(this.name)
    }
};
   var person1 = new Person("Joy",29,"Software Engineer");
   var person2 = new Person("Greg",27,"Doctor");
   alert(person1.sayName === person2.sayName); //true


5. Dynamischer Prototypenmodus

 function Person(name,age,job){   
    this.name = name;    
    this.age = age;    
    this.job = job;    
    if(typeof this.sayName != 'function'){  
          console.log(this.name); //在下了person1、person2两个实例下只会输出Joy,不会输出Greg   
          Person.prototype.sayName = function(){ //这里只在sayName()方法不存在的情况下,才会将它添加到原型中。这段代码只会在初次调用构造函数是才会执行。            alert(this.name)
        }
    }
}
  var person1 = new Person("Joy",29,"Software Engineer");var person2 = new Person("Greg",27,"Doctor");



6. Parasitenmodus

   function Person(name,age,job){   
    var o = new Object();    
    o.name = name;    
    o.age = age;    
    o.job = job;    
    o.sayName = function(){        
        alert(this.name);
    };
        return o;
}
var person1 = new Person("Joy",27,"Software Engineer");


Das vom parasitären Modus zurückgegebene Objekt hat keine Beziehung zum Konstruktor oder den Prototypeigenschaften des Konstruktors, d. h. das vom Konstruktor zurückgegebene Objekt unterscheidet sich nicht von dem außerhalb des Konstruktors erstellten Objekt. Aus diesem Grund wird empfohlen, diesen Modus nicht zu verwenden, wenn andere Modi verwendet werden können

7. Sicherer Konstruktormodus
Der sogenannte Safe bedeutet, dass es keine öffentlichen Eigenschaften gibt und seine Methoden auch nicht Verweisen Sie auf dieses Objekt. Sichere Konstruktoren folgen einem ähnlichen Muster wie parasitäre Konstruktoren, es gibt jedoch zwei Unterschiede: Erstens referenziert die neu erstellte Objektinstanzmethode nicht darauf, sondern der neue Operator wird nicht zum Aufrufen des Konstruktors verwendet.

function Person(name,age,job){   
 var o = new Object();    
   o.sayName = function(){     
      alert(name)
    }; 
       return o;
}
var person1 = Person("Joy",29,"Software Engineer");

Auf diese Weise ist die Variable person1 ein sicheres Objekt, und es gibt keine andere Möglichkeit, auf seine Datenelemente zuzugreifen, als die Methode sayName(). Selbst wenn anderer Code diesem Objekt Methoden oder Datenelemente hinzufügt, gibt es keine andere Möglichkeit, auf die an den Konstruktor übergebenen Originaldaten zuzugreifen.

Das obige ist der detaillierte Inhalt vonSieben objektorientierte JS-Methoden zum Erstellen von Objekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn