JavaScript Object Constructor
- Föregående sida JS-objektkontrollerare
- Nästa sida JS-objektprototyp
exempel
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
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");
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";
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; };
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";
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"; }
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;}; }
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");
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
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
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.
- Föregående sida JS-objektkontrollerare
- Nästa sida JS-objektprototyp