JavaScript Object Constructor

实例

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

Prøv det selv

at navngive konstruktionsfunktioner med store bogstaver er en god vane.

objekttype (skabelon) (klasse)

Forkert af kapitlet er begrænset. De kan kun oprette et enkelt objekt.

Nogle gange har vi brug for at oprette mange objekter af samme ‘type’’sskabelon”.

en metode til at oprette en ‘objekttype’, er at brugeobjektets konstruktionsfunktion

i det foregående eksempel,funktion Person() er objektets konstruktionsfunktion.

gennem new nøgleord kalder konstruktionsfunktionen kan oprette objekter af samme type:

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

Prøv det selv

this nøgleord

i JavaScript kaldes this emner er koden’s ‘besidder’.

this værdi, når den bruges i et objekt, er objektet selv.

i konstruktionsfunktionen,this Er uden værdi. Det er en erstatning for et nyt objekt. Når et nyt objekt oprettes, bliver værdien af this dette nye objekt.

Bemærk this Det er ikke en variabel. Det er en nøgleord. Du kan ikke ændre værdien af this.

Tilføj egenskaber til objektet

Det er simpelt at tilføje en ny egenskab til et eksisterende objekt:

实例

myFather.nationality = "English";

Prøv det selv

Den nye egenskab tilføjes til myFather. Ikke myMother, eller nogen anden person-objekt.

Tilføj metoder til objektet

Det er simpelt at tilføje en ny metode til et eksisterende objekt:

实例

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

Prøv det selv

Den nye metode tilføjes til myFather. Ikke myMother, eller nogen anden person-objekt.

Tilføj egenskaber til konstruktøren

Forskellig fra at tilføje en ny egenskab til et eksisterende objekt, kan du ikke tilføje en ny egenskab til objektets konstruktør:

实例

Person.nationality = "English";

Prøv det selv

Hvis du vil tilføje en ny egenskab til konstruktøren, skal du tilføje den til konstruktørfunktionen:

实例

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

Prøv det selv

På denne måde kan objektets egenskaber have standardværdier.

Tilføj metoder til konstruktøren

Din konstruktørfunktion kan også definere metoder:

实例

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;};
}

Prøv det selv

Forskellig fra at tilføje en ny metode til et eksisterende objekt, kan du ikke tilføje en ny metode til objektets konstruktør.

Måske skal der tilføjes en metode til et objekt inden for konstruktøren:

实例

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 tildeler værdien af name til person's lastName egenskab.

Nu kan du prøve det ud:

myMother.changeName("Jobs");

Prøv det selv

ved at bruge myMother erstat this,JavaScript kan finde ud af, hvilken person der håndteres i øjeblikket.

Indbyggede JavaScript-konstruktører

JavaScript tilbyder konstruktører til primitive objekter:

实例

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

Prøv det selv

Math() Objekter er ikke her. Math er en global objekt.new Nøgleord kan ikke bruges med Math.

Vidste du det?

Som du kan se ovenfor, JavaScript tilbyder objektversioner af primitive data typer som streng, tal og booleanske værdier, men der er ingen grund til at oprette komplekse objekter. Primitiv værdier er hurtigere!

请使用对象字面量 {} 代替 new Object()

请使用字符串字面量 "" 代替 new String()

请使用数值字面量代替 Number()

请使用布尔字面量代替 new Boolean()

请使用数组字面量 [] 代替 new Array()

请使用模式字面量代替 new RexExp()

请使用函数表达式 () {} 代替 new Function()

实例

var x1 = {};            // 新对象
var x2 = "";            // 新的原始字符串
var x3 = 0;             // 新的原始数值
var x4 = false;         // 新的原始逻辑值
var x5 = [];            // Ny arrayobjekt
var x6 = /()/           // Ny regulær udtryksobjekt
var x7 = function(){};  // Nyt funktionobjekt

Prøv det selv

Strengobjekt

normalt oprettes strenge som primitivværdier: var firstName = "Bill"

men du kan også bruge new oprette strengobjekter med nøgleord: var firstName = new String("Bill")

Vær venlig at JS strengLær i dette kapitel, hvorfor du ikke bør oprette strenge som objekter.

Talobjekt

normalt oprettes tal som primitivværdier: var x = 456

men du kan også bruge new oprette numeriske objekter med nøgleord: var x = new Number(456)

Vær venlig at JS talLær i dette kapitel, hvorfor du ikke bør oprette numeriske værdier som objekter.

Boolean objekt

normalt oprettes logiske værdier som primitivværdier: var x = false

men du kan også bruge new oprette logiske objekter med nøgleord: var x = new Boolean(false)

Vær venlig at JS logikLær i dette kapitel, hvorfor du ikke bør oprette logiske værdier som objekter.