Kết cấu đối tượng JavaScript

thực thể

Khóa học gợi ý:
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    function Person(first, last, age, eye) {
}

Thử ngay

this.eyeColor = eye;

thói quen đặt tên cho hàm构造器 bằng chữ cái đầu in đậm là một thói quen tốt.

loại đối tượng (sơ đồ) (class)

trong chương trước có giới hạn. Chúng chỉ tạo ra một đối tượng duy nhất.thỉnh thoảng chúng ta cần tạo nhiều đối tượng cùng "loại".sơ đồ

”。phương pháp tạo ra một loại "đối tượng" là sử dụng

hàm构造器 đối tượngTrong ví dụ trên, hàm Person()

chính là hàm构造器 đối tượng. new để

ký tự từ khóa gọi hàm构造器 có thể tạo ra đối tượng cùng loại:
var myFather = new Person("Bill", "Gates", 62, "blue");

Thử ngay

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

ký tự từ khóa this thứ có trong JavaScript được gọi là

this giá trị, khi được sử dụng trong đối tượng, chính là đối tượng đó.

Trong hàm构造器中,this Không có giá trị. Nó là vật thay thế cho đối tượng mới. Khi một đối tượng mới được tạo ra, giá trị của this sẽ trở thành đối tượng đó.

Xin lưu ý this Nó không phải là biến. Nó là từ khóa. Bạn không thể thay đổi giá trị của this.

Thêm thuộc tính vào đối tượng

Thêm thuộc tính mới vào đối tượng đã có rất đơn giản:

thực thể

myFather.nationality = "English";

Thử ngay

Thuộc tính mới được thêm vào myFather. Không phải myMother, cũng không phải bất kỳ đối tượng person nào khác.

Thêm phương thức vào đối tượng

Thêm phương thức mới vào đối tượng đã có rất đơn giản:

thực thể

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

Thử ngay

Phương thức mới được thêm vào myFather. Không phải myMother, cũng không phải bất kỳ đối tượng person nào khác.

Thêm thuộc tính vào constructor

Khác với việc thêm thuộc tính mới vào đối tượng đã có, bạn không thể thêm thuộc tính mới vào constructor của đối tượng:

thực thể

Person.nationality = "English";

Thử ngay

Nếu muốn thêm một thuộc tính mới vào constructor, bạn phải thêm vào hàm constructor:

thực thể

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

Thử ngay

Như vậy các thuộc tính của đối tượng có thể có giá trị mặc định.

Thêm phương thức vào constructor

Hàm constructor của bạn cũng có thể định nghĩa phương thức:

thực thể

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

Thử ngay

Khác với việc thêm phương thức mới vào đối tượng đã có, bạn không thể thêm phương thức mới vào constructor của đối tượng.

Phải thêm phương thức vào đối tượng trong hàm constructor:

thực thể

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

Hàm changeName() gán giá trị name vào thuộc tính lastName của đối tượng person.

Bây giờ bạn có thể thử:

myMother.changeName("Jobs");

Thử ngay

bằng cách sử dụng myMother thay thế this،JavaScript có thể biết người nào đang được xử lý hiện tại.

Hàm xây dựng trong JavaScript

JavaScript cung cấp các hàm xây dựng cho các đối tượng nguyên thủy:

thực thể

var x1 = new Object();    // Một đối tượng Object mới
var x2 = new String();    // Một đối tượng String mới
var x3 = new Number();    // Một đối tượng Number mới
var x4 = new Boolean();   // Một đối tượng Boolean mới
var x5 = new Array();     // Một đối tượng Array mới
var x6 = new RegExp();    // Một đối tượng RegExp mới
var x7 = new Function();  // Một đối tượng Function mới
var x8 = new Date();      // Một đối tượng Date mới

Thử ngay

Math() Đối tượng không ở trong danh sách này. Math là đối tượng toàn cục.new Các từ khóa không thể sử dụng trong Math.

Bạn có biết không?

Như bạn đã thấy ở trên, JavaScript cung cấp phiên bản đối tượng của các loại dữ liệu nguyên thủy chuỗi, số và logic. Nhưng không có lý do nào để tạo ra đối tượng phức tạp. Giá trị nguyên thủy nhanh hơn nhiều!

hãy sử dụng biểu thức văn bản đối tượng {} thay thế new Object()

hãy sử dụng biểu thức văn bản chuỗi "" thay thế new String()

hãy sử dụng biểu thức văn bản số thay thế Number()

hãy sử dụng biểu thức văn bản logic thay thế new Boolean()

hãy sử dụng biểu thức văn bản mảng [] thay thế new Array()

hãy sử dụng biểu thức văn bản mẫu thay thế new RexExp()

hãy sử dụng biểu thức hàm () {} thay thế new Function()

thực thể

var x1 = {};            // 新对象
var x2 = "";            // 新的原始字符串
var x3 = 0;             // 新的原始数值
var x4 = false;         // 新的原始逻辑值
var x5 = [];            // Đối tượng mảng mới
var x6 = /()/           // Đối tượng biểu thức chính quy mới
var x7 = function(){};  // Đối tượng hàm mới

Thử ngay

Đối tượng chuỗi

Thường thì chuỗi được tạo thành giá trị nguyên thuỷ: var firstName = "Bill"

Nhưng bạn cũng có thể sử dụng new Tạo đối tượng chuỗi bằng từ khóa: var firstName = new String("Bill")

Vui lòng JS ChuỗiTrong chương này, bạn sẽ học tại sao không nên tạo chuỗi thành đối tượng.

Đối tượng số

Thường thì giá trị số được tạo thành giá trị nguyên thuỷ: var x = 456

Nhưng bạn cũng có thể sử dụng new Tạo đối tượng số bằng từ khóa: var x = new Number(456)

Vui lòng JS SốTrong chương này, bạn sẽ học tại sao không nên tạo giá trị số thành đối tượng.

Đối tượng布尔

Thường thì giá trị logic được tạo thành giá trị nguyên thuỷ: var x = false

Nhưng bạn cũng có thể sử dụng new Tạo đối tượng logic bằng từ khóa: var x = new Boolean(false)

Vui lòng JS LôgicTrong chương này, bạn sẽ học tại sao không nên tạo giá trị logic thành đối tượng.