JavaScript Object Constructor
- Forrige side JS objekt tilgangsobjekter
- Næste side JS objekt prototype
实例
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
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");
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";
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; };
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";
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"; }
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;}; }
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");
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
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
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.
- Forrige side JS objekt tilgangsobjekter
- Næste side JS objekt prototype