function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}Jó gyakorlatnak tekinthető, ha a konstruktor függvényeket nagy kezdőbetűvel nevezik el.
Egy konstruktor függvényben ennek nincs értéke. Ez az új objektum helyettesítője. A this értéke lesz az új objektum, amikor új objektum jön létre.
A JavaScript ezt bemutatója
Az előző fejezetekből származó példák korlátozottak. Csak egyedi objektumokat hoznak létre.
Néha szükségünk van egy "tervrajzra" sok azonos "típusú" objektum létrehozásához.
Az "objektumtípus" létrehozásának módja az objektumkonstruktor funkció használata.
A fenti példában a Személy() függvény egy objektumkonstruktor függvény.
Az azonos típusú objektumok a konstruktor függvénynek a new kulcsszóval történő meghívásával jönnek létre:
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");A JavaScriptben a ez a kulcsszó egy objektumra utal.
Melyik objektum attól függ, hogy ezt hogyan hívják meg (használják vagy hívják).
A ez a kulcsszó a használat módjától függően különböző objektumokra utal:
Egy objektummetódusban a ez az objektumra utal.
Önmagában ez a globális objektumra utal.
Egy függvényben a ez a globális objektumra utal.
Egy függvényben szigorú módban ez definiálatlan.
Egy eseményben a ez arra az elemre utal, amely az eseményt fogadta.
Olyan módszerek, mint a call(), apply() és a bind() utalhat ezre bármely objektumra.
ez nem változó. Ez egy kulcsszó. A ez értéke nem módosítható.
A JavaScript ezt bemutatója
Új tulajdonság hozzáadása egy meglévő objektumhoz egyszerű:
myFather.nationality = "English";Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p id="demo"></p>
<script>
// Constructor function for Person objects
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
// Create 2 Person objects
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
// Add nationality to first object
myFather.nationality = "English";
// Display nationality
document.getElementById("demo").innerHTML =
"My father is " + myFather.nationality;
</script>
</body>
</html>
Az ingatlan hozzá lesz adva a myFatherhez. Nem anyámnak. (Más személynek nem tiltakozik).
Új metódus hozzáadása egy meglévő objektumhoz egyszerű:
myFather.name = function () {
return this.firstName + " " + this.lastName;
};Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p id="demo"></p>
<script>
// Constructor function for Person objects
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
// Create 2 Person objects
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
// Add a name method to first object
myFather.name = function() {
return this.firstName + " " + this.lastName;
};
// Display full name
document.getElementById("demo").innerHTML =
"My father is " + myFather.name();
</script>
</body>
</html>
A módszer hozzáadódik a myFatherhez. Nem anyámnak. (Más személynek nem tiltakozik).
Ugyanúgy nem adhat hozzá új tulajdonságot az objektumkonstruktorhoz, mint ahogyan te új tulajdonság hozzáadása egy meglévő objektumhoz:
Person.nationality = "English";Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p>You cannot add a new property to a constructor function.</p>
<p id="demo"></p>
<script>
// Constructor function for Person objects
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
// You can NOT add a new property to a constructor function
Person.nationality = "English";
// Create 2 Person objects
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
// Display nationality
document.getElementById("demo").innerHTML =
"The nationality of my father is " + myFather.nationality;
</script>
</body>
</html>
Ha új tulajdonságot szeretne hozzáadni egy konstruktorhoz, hozzá kell adnia azt a konstruktorhoz konstruktor függvény:
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p id="demo"></p>
<script>
// Constructor function for Person objects
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
this.nationality = "English";
}
// Create 2 Person objects
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
// Display nationality
document.getElementById("demo").innerHTML =
"My father is " + myFather.nationality + ". My mother is " + myMother.nationality;
</script>
</body>
</html>
Így az objektumtulajdonságok alapértelmezett értékei lehetnek.
A konstruktor függvénye metódusokat is meghatározhat:
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óbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p id="demo"></p>
<script>
// Constructor function for Person objects
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
this.name = function() {
return this.firstName + " " + this.lastName
};
}
// Create a Person object
const myFather = new Person("John", "Doe", 50, "blue");
// Display full name
document.getElementById("demo").innerHTML =
"My father is " + myFather.name();
</script>
</body>
</html>
Nem adhat hozzá új metódust objektumkonstruktorhoz ugyanúgy, mint a új metódus egy meglévő objektumhoz.
Metódusokat kell hozzáadni egy objektumkonstruktorhoz a konstruktor függvény:
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;
};
}A changeName() függvény hozzárendeli a név értékét a személyhez vezetéknév tulajdonság.
myMother.changeName("Doe");Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p id="demo"></p>
<script>
// Constructor function for Person objects
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;
}
}
// Create a Person object
const myMother = new Person("Sally","Rally",48,"green");
// Change last name
myMother.changeName("Doe");
// Display last name
document.getElementById("demo").innerHTML =
"My mother's last name is " + myMother.lastName;
</script>
</body>
</html>
A JavaScript tudja, hogy Ön melyik személy arról beszélünk, hogy ezt az anyámra cseréljük.
A JavaScript beépített konstruktorokkal rendelkezik a natív objektumokhoz:
new String() // A new String object
new Number() // A new Number object
new Boolean() // A new Boolean object
new Object() // A new Object object
new Array() // A new Array object
new RegExp() // A new RegExp object
new Function() // A new Function object
new Date() // A new Date objectPróbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Constructors</h2>
<p id="demo"></p>
<script>
const x1 = new String(); // A new String object
const x2 = new Number(); // A new Number object
const x3 = new Boolean(); // A new Boolean object
const x4 = new Object(); // A new Object object
const x5 = new Array(); // A new Array object
const x6 = new RegExp(); // A new RegExp object
const x7 = new Function(); // A new Function object
const x8 = new Date(); // A new Date object
// Display the type of all objects
document.getElementById("demo").innerHTML =
"x1: " + typeof x1 + "<br>" +
"x2: " + typeof x2 + "<br>" +
"x3: " + typeof x3 + "<br>" +
"x4: " + typeof x4 + "<br>" +
"x5: " + typeof x5 + "<br>" +
"x6: " + typeof x6 + "<br>" +
"x7: " + typeof x7 + "<br>" +
"x8: " + typeof x8 + "<br>";
</script>
<p>There is no need to use new String(), new Number(), new Boolean(), new Array(), and new RegExp()</p>
<p>Use literals instead like: myArray = []</p>
</body>
</html>
A Math() objektum nem szerepel a listában. A Math egy globális objektum. A new kulcsszó nem használható ezen Matek.
Mint fentebb látható, a JavaScript rendelkezik a primitív objektumverzióival adattípusok karakterlánc, szám és logikai . De nincs ok összetett objektumok létrehozására. Primitív értékek sokkal gyorsabbak:
Használja a "" karakterlánc-literálokat a new String() helyett.
Használja a 50 számliterálokat a new Number() helyett.
Használja a true/false logikai literálokat az new Boolean() helyett.
Használja a {} objektumliterálokat a new Object() helyett.
Használja a [] tömbliterálokat a new Array() helyett.
Használja a /()/ minta literálokat az új RegExp() helyett.
Használja a () {} függvénykifejezéseket a new Function() helyett.
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new Object object
const x5 = []; // new Array object
const x6 = /()/ // new RegExp object
const x7 = function(){}; // new functionPróbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
let x1 = ""; // string
let x2 = 0; // number
let x3 = false; // boolean
const x4 = {}; // Object object
const x5 = []; // Array object
const x6 = /()/; // RegExp object
const x7 = function(){}; // function
// Display the type of all
document.getElementById("demo").innerHTML =
"x1: " + typeof x1 + "<br>" +
"x2: " + typeof x2 + "<br>" +
"x3: " + typeof x3 + "<br>" +
"x4: " + typeof x4 + "<br>" +
"x5: " + typeof x5 + "<br>" +
"x6: " + typeof x6 + "<br>" +
"x7: " + typeof x7 + "<br>";
</script>
</body>
</html>
Általában a karakterláncok primitívekként jönnek létre: firstName="János"
A karakterláncok azonban objektumként is létrehozhatók a new kulcsszó használatával:
firstName=new String("János")
A fejezetből megtudhatja, miért nem szabad a karakterláncokat objektumként létrehozni JS Strings.
Általában a számok primitívekként jönnek létre: x=30
De a számok objektumként is létrehozhatók a new kulcsszó használatával:
x=új Szám(30)
A fejezetből megtudhatja, miért nem szabad számokat objektumként létrehozni JS számok.
Általában a logikai értékek primitívekként jönnek létre: x = hamis
A logikai értékek azonban objektumként is létrehozhatók a new kulcsszó használatával:
x=új logikai érték(false)
A fejezetből megtudhatja, miért nem szabad objektumként létrehozni a logikai értékeket JS Booleans.