Konstruktor Objek JavaScript

实例

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

Coba Sendiri

Berbicara dalam huruf besar untuk menamai fungsi konstraktor adalah kebiasaan yang baik.

Tipe objek (rancangan) (kelas)

Contoh di bab sebelumnya adalah terbatas. Mereka hanya membuat objek tunggal.

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

Cara untuk membuat "tipe objek" adalah menggunakanFungsi konstraktor objek

Pada contoh di atas,Fungsi Person() itu adalah fungsi konstraktor objek.

Dengan new Pemanggilan kata kunci 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");

Coba Sendiri

this kata kunci

Dalam JavaScript, disebut this yang dimiliki adalah pemilik kode.

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

Dalam fungsi konstraktor,this Tidak ada nilai. Ini adalah pengganti objek baru. Saat objek baru dibuat, nilai this akan menjadi objek itu sendiri.

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

Menambahkan atribut ke objek

Menambahkan atribut baru ke objek yang sudah ada sangat mudah:

实例

myFather.nationality = "English";

Coba Sendiri

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

Menambahkan metode ke objek

Menambahkan metode baru ke objek yang sudah ada sangat mudah:

实例

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

Coba Sendiri

Metode baru ditambahkan ke myFather. Bukan myMother, dan bukan objek person lainnya.

Menambahkan atribut ke konstruktur

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

实例

Person.nationality = "English";

Coba Sendiri

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

实例

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

Coba Sendiri

Dengan cara ini, properti objek dapat memiliki nilai default.

Menambahkan metode ke konstruktur

Fungsi konstruktur Anda juga dapat mendefinisikan metode:

实例

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

Coba Sendiri

Beberapa dengan menambahkan metode baru ke objek yang sudah ada, Anda tidak dapat menambahkan metode baru ke fungsi konstruktur objek.

Harus di dalam fungsi konstruktur untuk menambahkan metode ke objek:

实例

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() mengeset nilai name ke atribut lastName objek person.

现在您可以试一试:

myMother.changeName("Jobs");

Coba Sendiri

通过用 myMother 替代 this,JavaScript 可以获知目前处理的哪个 person。

内建 JavaScript 构造器

JavaScript 提供用于原始对象的构造器:

实例

var x1 = new Object();    // 一个新的 Object 对象
var x2 = new String();    // 一个新的 String 对象
var x3 = new Number();    // 一个新的 Number 对象
var x4 = new Boolean();   // 一个新的 Boolean 对象
var x5 = new Array();     // 一个新的 Array 对象
var x6 = new RegExp();    // 一个新的 RegExp 对象
var x7 = new Function();  // 一个新的 Function 对象
var x8 = new Date();      // 一个新的 Date 对象

Coba Sendiri

Math() 对象不再此列。Math 是全局对象。new 关键词不可用于 Math。

您知道吗?

正如以上所见,JavaScript 提供原始数据类型字符串、数字和布尔的对象版本。但是并无理由创建复杂的对象。原始值快得多!

请使用对象字面量 {} 代替 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 = [];            // Objek array baru
var x6 = /()/           // Objek ekspresi reguler baru
var x7 = function(){};  // Objek fungsi baru

Coba Sendiri

Objek String

Secara biasa, string dibuat sebagai nilai asli: var firstName = "Bill"

tetapi dapat digunakan new Membuat objek string dengan kata kunci: var firstName = new String("Bill")

Silakan String JSPanduan di bab ini tentang mengapa tidak seharusnya membuat string sebagai objek.

Objek Numerik

Secara biasa, nilai numerik dibuat sebagai nilai asli: var x = 456

tetapi dapat digunakan new Membuat objek numerik dengan kata kunci: var x = new Number(456)

Silakan Numerik JSPanduan di bab ini tentang mengapa tidak seharusnya membuat nilai numerik sebagai objek.

Objek Boolean

Secara biasa, nilai logika dibuat sebagai nilai asli: var x = false

tetapi dapat digunakan new Membuat objek logika dengan kata kunci: var x = new Boolean(false)

Silakan Logika JSPanduan di bab ini tentang mengapa tidak seharusnya membuat nilai logika sebagai objek.