Konstruktor obiektu w JavaScript

przykład

Kursy rekomendowane:
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

Spróbuj sam

jest dobrym zwyczajem nazywania funkcji konstruktora z dużą literą.

typu obiektu (plan) (klasa)

w poprzednim rozdziale jest ograniczony. Mogą one tworzyć tylko pojedynczy obiekt.

przedziałuCzasami musimy utworzyć wiele obiektów tego samego "planu

”.metoda tworzenia "typu obiektu" jest użyciem

funkcja konstruktora obiektuW powyższym przykładzie, function Person(first, last, age, eye) {

to jest funkcja konstruktora obiektu. new poprzez

kluczowe słowo wywołuje funkcję konstruktora, co pozwala utworzyć obiekt tego samego typu:
var myFather = new Person("Bill", "Gates", 62, "blue");

Spróbuj sam

this var myMother = new Person("Steve", "Jobs", 56, "green");

kluczowym słowem this w JavaScript jest nazywane

this jest wartością obiektu, gdy jest używana w obiekcie.

W konstruktorze funkcji,this Brak wartości. Jest to zamiennik nowego obiektu. Kiedy nowy obiekt jest tworzony, wartość this staje się tym nowym obiektem.

Prosze uwazac this To nie jest zmienna. To słowo kluczowe. Nie możesz zmienić wartości this.

Dodawanie właściwości do obiektu

Dodawanie nowych właściwości do już istniejącego obiektu jest proste:

przykład

myFather.nationality = "English";

Spróbuj sam

Nowa właściwość została dodana do myFather. Nie do myMother ani do żadnego innego obiektu person.

Dodawanie metod do obiektu

Dodawanie nowych metod do już istniejącego obiektu jest proste:

przykład

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

Spróbuj sam

Nowa metoda została dodana do myFather. Nie do myMother ani do żadnego innego obiektu person.

Dodawanie właściwości do konstruktora

W przeciwieństwie do dodawania nowych właściwości do już istniejącego obiektu, nie możesz dodać nowych właściwości do konstruktora obiektu:

przykład

Person.nationality = "English";

Spróbuj sam

Aby dodać nową właściwość do konstruktora, musisz dodać ją do funkcji konstruktora:

przykład

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

Spróbuj sam

W ten sposób atrybuty obiektu mogą mieć wartości domyślne.

Dodawanie metod do konstruktora

Twoja funkcja konstruktora może również definiować metody:

przykład

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

Spróbuj sam

W przeciwieństwie do dodawania nowych metod do już istniejącego obiektu, nie możesz dodać nowych metod do konstruktora obiektu.

Musisz dodać metodę do obiektu wewnątrz funkcji konstruktora:

przykład

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

Funkcja changeName() przypisuje wartość name do atrybutu lastName obiektu person.

Teraz możesz spróbować:

myMother.changeName("Jobs");

Spróbuj sam

poprzez myMother zastąpić this,JavaScript może zidentyfikować, który person jest obecnie przetwarzany.

wbudowane konstruktory JavaScript

JavaScript dostarcza konstruktory używane do tworzenia obiektów oryginalnych:

przykład

var x1 = new Object();    // Nowy obiekt Object
var x2 = new String();    // Nowy obiekt String
var x3 = new Number();    // Nowy obiekt Number
var x4 = new Boolean();   // Nowy obiekt Boolean
var x5 = new Array();     // Nowy obiekt Array
var x6 = new RegExp();    // Nowy obiekt RegExp
var x7 = new Function();  // Nowy obiekt Function
var x8 = new Date();      // Nowy obiekt Date

Spróbuj sam

Math() Obiekty nie są w tej liście. Math jest obiektem globalnym.new Słowa kluczowe nie mogą być używane w Math.

Czy wiesz?

Jak widać powyżej, JavaScript dostarcza obiektów wersji typów danych oryginalnych, takich jak ciąg znaków, liczba i logiczna. Ale nie ma powodu tworzyć złożonych obiektów. Wartości oryginalne są znacznie szybsze!

Proszę użyć wyrażenia obiektu {} zastąpić new Object()

Proszę użyć wyrażenia ciągu znaków "" zastąpić new String()

Proszę użyć wyrażenia liczbowego zamiast Number()

Proszę użyć wyrażenia logicznego zamiast new Boolean()

Proszę użyć wyrażenia tablicy [] zastąpić new Array()

Proszę użyć wyrażenia wzorca zamiast new RegExp()

Proszę użyć wyrażenia funkcji () {} zastąpić new Function()

przykład

var x1 = {};            // Nowy obiekt
var x2 = "";            // Nowy oryginalny ciąg znaków
var x3 = 0;             // Nowy oryginalny liczbowy wartość
var x4 = false;         // Nowy oryginalny logiczny wartość
var x5 = [];            // Nowy obiekt tablicy
var x6 = /()/           // Nowy obiekt wyrażenia regularnego
var x7 = function(){};  // Nowy obiekt funkcji

Spróbuj sam

Obiekt ciągów znaków

Zwykle ciągi znaków są tworzone jako wartości pierwotne: var firstName = "Bill"

Ale można również użyć new Kluczowe słowo tworzenia obiektu ciągów znaków: var firstName = new String("Bill")

Proszę, w Ciągi znaków JSW tym rozdziale dowiesz się, dlaczego nie powinieneś tworzyć ciągów znaków jako obiektów.

Obiekt liczbowy

Zwykle wartości liczbowe są tworzone jako wartości pierwotne: var x = 456

Ale można również użyć new Kluczowe słowo tworzenia liczbowego obiektu: var x = new Number(456)

Proszę, w Liczby JSW tym rozdziale dowiesz się, dlaczego nie powinieneś tworzyć wartości liczbowych jako obiektów.

Obiekt logiczny

Zwykle wartości logiczne są tworzone jako wartości pierwotne: var x = false

Ale można również użyć new Kluczowe słowo tworzenia logicznego obiektu: var x = new Boolean(false)

Proszę, w Logika JSW tym rozdziale dowiesz się, dlaczego nie powinieneś tworzyć wartości logicznych jako obiektów.