JavaScript Object Constructor

exempel

function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

Prova själv

Det är en bra vana att namnge konstruktionsfunktioner med stora bokstäver.

objekttyp (modell) (klass)

Exemplet i föregående kapitel är begränsat. De skapar bara ett enskilt objekt.

Ibland behöver vi skapa många objekt av samma "modell".

att skapa en "objekttyp" är att användaobjektets konstruktionsfunktion

i föregående exempel,funktion Person() är objektets konstruktionsfunktion.

genom new nyckelordet anropar konstruktionsfunktionen kan skapa objekt av samma typ:

var minFar = new Person("Bill", "Gates", 62, "blue");
var minMor = new Person("Steve", "Jobs", 56, "green");

Prova själv

this nyckelord

i JavaScript kallas det this det är ägaren av koden.

this værdet, när det används i ett objekt, är objektet självt.

i konstruktionsfunktionen,this Det är utan värde. Det är en ersättare för nytt objekt. När ett nytt objekt skapas, blir värdet av this detta nya objekt.

Observera this Det är inte en variabel. Det är en nyckelord. Du kan inte ändra thiss värde.

Lägg till egenskap till objektet

Det är enkelt att lägga till en ny egenskap till ett befintligt objekt:

exempel

myFather.nationality = "English";

Prova själv

Den nya egenskapen läggs till till myFather. inte myMother, eller något annat personobjekt.

Lägg till metod till objektet

Det är enkelt att lägga till en ny metod till ett befintligt objekt:

exempel

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};

Prova själv

Den nya metoden läggs till till myFather. inte myMother, eller något annat personobjekt.

Lägg till egenskap till konstruktorn

Och till skillnad från att lägga till en ny egenskap till ett befintligt objekt, kan du inte lägga till en ny egenskap till objektets konstruktionsfunktion:

exempel

Person.nationality = "English";

Prova själv

Om du vill lägga till en ny egenskap till konstruktorn, måste du lägga till den till konstruktionsfunktionen:

exempel

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

Prova själv

Så kan objektets egenskaper ha standardvärden.

Lägg till metod till konstruktorn

Din konstruktionsfunktion kan också definiera metoder:

exempel

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.name = function() {return this.firstName + " " + this.lastName;};
}

Prova själv

Och till skillnad från att lägga till en ny metod till ett befintligt objekt, kan du inte lägga till en ny metod till objektets konstruktionsfunktion.

Måste lägga till en metod inom konstruktionsfunktionen för ett objekt:

exempel

function Person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

changeName() funktion tilldelar name till personns lastName-attribut.

Nu kan du försöka det:

myMother.changeName("Jobs");

Prova själv

genom att använda myMother ersätt this,JavaScript kan veta vilken person som hanterar för närvarande.

Inbyggda JavaScript-byggare

JavaScript erbjuder byggare för grundläggande objekt:

exempel

var x1 = new Object();    // Ett nytt Object-objekt
var x2 = new String();    // Ett nytt String-objekt
var x3 = new Number();    // Ett nytt Number-objekt
var x4 = new Boolean();   // Ett nytt Boolean-objekt
var x5 = new Array();     // Ett nytt Array-objekt
var x6 = new RegExp();    // Ett nytt RegExp-objekt
var x7 = new Function();  // Ett nytt Function-objekt
var x8 = new Date();      // En ny Date-objekt

Prova själv

Math() Objekt finns inte på denna lista. Math är en global objekt.new Nyckelord kan inte användas i Math.

Vet du det?

Som du ser ovan, JavaScript erbjuder objektversioner av de grundläggande datatyperna sträng, nummer och boolean. Men det finns ingen anledning att skapa komplexa objekt. Originalvärden är mycket snabbare!

Använd objektlitteral {} ersätt new Object()

Använd stränglitteral "" ersätt new String()

Använd numerisk litteral i stället Number()

Använd boolell litteral i stället new Boolean()

Använd arraylitteral [] ersätt new Array()

Använd mönsterlitteral i stället new RegExp()

Använd funktionsexpression () {} ersätt new Function()

exempel

var x1 = {};            // Ny objekt
var x2 = "";            // Ny ursprunglig sträng
var x3 = 0;             // Ny ursprunglig numerisk värde
var x4 = false;         // Ny ursprunglig logisk värde
var x5 = [];            // Nytt arrayobjekt
var x6 = /()/           // Nytt reguljärt uttrycksobjekt
var x7 = function(){};  // Nytt funktionssobjekt

Prova själv

Strängobjekt

Vanligtvis skapas strängar som ursprungliga värden: var firstName = "Bill"

Men du kan också använda new Nyckelord för att skapa en strängobjekt: var firstName = new String("Bill")

Vänligen JS-strängLär dig i detta kapitel varför det inte är bra att skapa strängar som objekt.

Numeriska objekt

Vanligtvis skapas numeriska värden som ursprungliga värden: var x = 456

Men du kan också använda new Nyckelord för att skapa ett numeriskt objekt: var x = new Number(456)

Vänligen JS-nummerLär dig i detta kapitel varför det inte är bra att skapa numeriska värden som objekt.

Boolean-objekt

Vanligtvis skapas logiska värden som ursprungliga värden: var x = false

Men du kan också använda new Nyckelord för att skapa ett logiskt objekt: var x = new Boolean(false)

Vänligen JS-logikLär dig i detta kapitel varför det inte är bra att skapa logiska värden som objekt.