Konstruktor Objek JavaScript

Contoh

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

亲自试一试

Biasa untuk menamai fungsi konstraktor dengan huruf besar di awal.

jenis objek (rancangan) (kelas)

contoh di bab sebelumnya mempunyai batasan. Mereka hanya dapat membuat objek tunggal.

Kadang-kadang kita perlu membuat banyak objek yang sama jenis "Rancangan”.

Cara untuk membuat jenis "objek" adalah dengan menggunakanfungsi konstraktor objek

dalam contoh di atas,fungsi Person() adalah fungsi konstraktor objek.

dengan cara new kata kunci memanggil fungsi konstraktor dapat membuat objek yang bertipe yang sama:

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

亲自试一试

this kata kunci

dalam JavaScript, disebut this yang dimiliki adalah pemilik kode.

this nilai, saat digunakan dalam objek, adalah objek itu sendiri.

dalam fungsi konstraktor,this Tiada nilai. Ia adalah pengganti objek baru. Apabila objek baru dibuat, nilai this akan menjadi objek itu sendiri.

Perhatikan this Ini bukan variabel. Ini adalah kata kunci. Anda tidak dapat mengubah nilai this.

Menambahkan atribut ke objek

Menambahkan atribut ke objek yang sudah ada sangat mudah:

Contoh

myFather.nationality = "English";

亲自试一试

Atribut baru ditambahkan ke myFather. Bukan myMother, atau objek person lainnya.

Menambahkan method ke objek

Menambahkan method ke objek yang sudah ada sangat mudah:

Contoh

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

亲自试一试

Method baru ditambahkan ke myFather. Bukan myMother, atau objek person lainnya.

Menambahkan atribut ke konstraktor

Beberapa dengan menambahkan atribut ke objek yang sudah ada, Anda tidak dapat menambahkan atribut ke fungsi konstraktor objek:

Contoh

Person.nationality = "English";

亲自试一试

Untuk menambahkan atribut baru ke konstraktor, Anda harus menambahkannya ke fungsi konstraktor:

Contoh

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

亲自试一试

Dengan cara ini, properti objek dapat memiliki nilai default.

Menambahkan method ke konstraktor

Fungsi konstraktor Anda juga dapat mendefinikan method:

Contoh

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

亲自试一试

Beberapa dengan menambahkan method ke objek yang sudah ada, Anda tidak dapat menambahkan method ke fungsi konstraktor objek.

Harus di dalam fungsi konstraktor untuk menambahkan method ke objek:

Contoh

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

fungsi changeName() mengisi nilai name ke properti lastName objek person.

Sekarang anda boleh cuba:

myMother.changeName("Jobs");

亲自试一试

dengan myMother gantikan this,JavaScript boleh tahu mana orang yang sedang diproses.

Constructor JavaScript bawaan

JavaScript menyediakan constructor untuk objek asal:

Contoh

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

亲自试一试

Math() Objek bukan bagian daripada ini. Math adalah objek global.new Kata kunci tidak boleh digunakan dalam Math.

Adakah anda tahu?

Sebagai yang dilihat di atas, JavaScript menyediakan objek versi data asal seperti string, nombor dan boolean. Tetapi tiada alasan untuk mencipta objek yang kompleks. Nilai asal lebih cepat!

Sila gunakan literal objek {} gantikan new Object()

Sila gunakan literal string "" gantikan new String()

Sila gunakan literal nombor untuk gantikan Number()

Sila gunakan literal boolean untuk gantikan new Boolean()

Sila gunakan literal array [] gantikan new Array()

Sila gunakan literal model untuk gantikan new RexExp()

Sila gunakan ekspresi fungsi () {} gantikan new Function()

Contoh

var x1 = {};            // Objek baharu
var x2 = "";            // String asal baharu
var x3 = 0;             // Nombor asal baharu
var x4 = false;         // 巴达逻辑值 baharu
var x5 = [];            // 新的数组对象
var x6 = /()/           // 新的正则表达式对象
var x7 = function(){};  // 新的函数对象

亲自试一试

字符串对象

通常,字符串被创建为原始值:var firstName = "Bill"

但是也可以使用 new 关键词创建字符串对象:var firstName = new String("Bill")

请在 JS 字符串在这一章中学习为何不应该把字符串创建为对象。

数字对象

通常,数值被创建为原始值:var x = 456

但是也可以使用 new 关键词创建数字对象:var x = new Number(456)

请在 JS 数字在这一章中学习为何不应该把数值创建为对象。

布尔对象

通常,逻辑值被创建为原始值:var x = false

但是也可以使用 new 关键词创建逻辑对象:var x = new Boolean(false)

请在 JS 逻辑在这一章中学习为何不应该把逻辑值创建为对象。