• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Kiến thức tổng hợp

Bàn về khái niệm Object trong JavaScript

@admiz by @admiz
04/05/2021
in Kiến thức tổng hợp
0
Bàn Về Khái Niệm Object Trong Javascript 60902d0e80f2d.jpeg

Khái niệm Object trong javascript là gì?

Về mặt định nghĩa, một đối tượng (một object) là một danh sách các item, mỗi item là một cặp name-value, trong đó value có thể là: các kiểu dữ liệu cơ bản, function, hay cũng có thể là một object khác (kiểu dữ liệu phức hợp).

Ta gọi mỗi item là một property(thuộc tính) của object nếu value của item đó có kiểu dữ liệu là kiểu phức hợp hoặc các kiểu dữ liệu cơ bản, ngược lại nếu value của item nó là một hàm (một function) thì ta gọi nó là method của object (phương thức của object).

Ta xét một ví dụ sau:

var myFirstObject = {

firstName: “Richard”,

favoriteAuthor: “Conrad”

;

Ta thấy rằng, đối tượng object này là một danh sách các items, mỗi item (có thể là property hoặc method) được lưu trữ trong object bởi cặp giá trị name-value, trong trường hợp này thì các tên của property là ‘firstName’ và ‘favoriteAuthor’, tương ứng với các tên này là các giá trị “Richard” và “Conrad”.

Làm sao truy cập tới các thuộc tính của Object?

Để lấy được các giá trị của thuộc tính trong object, ta có thể truy cập tới tên của thuộc tính bằng toán tử ngoặc vuông “[ ]” hoặc dấu chấm “.“. Dưới đây là minh hoạ:

myFirstObject.firstName; //Richard

myFirstObject[‘favoriteAuthor’]; //Conrad

Truy cập tới các thuộc tính không tồn tại của object sẽ cho ta giá trị là undefined.

Có một trường hợp nên chú ý, nếu tên của thuộc tính là số (tức là number), thì ta chỉ có thể truy cập bằng cách dùng dấu ngoặc vuông “[ ]” mà không thể dùng dấu chấm “.”:

var myObject = {10: ‘test1’

myObject.10; //Throw Error

myObject[’10’]; //test1

Các cách để tạo ra Object

Thông thường, ta có hai cách để tạo ra một object: dùng object literals và dùng Object constructor.

Dùng Object literals

Mình không rõ tiếng Việt gọi literal là gì, nhưng đại khái là sẽ dùng cặp ngoặc nhọn {  để tạo một object. Literal có thể hiểu theo ngữ cảnh nào đó là việc “sử dụng chuỗi thuần tuý”. Đoạn code sau minh hoạ cho điều này:

var myBook = {10: ‘test1’ ; //đối tượng có 1 thuộc tính

//đối tượng có 1 thuộc tính và 1 phương thức (method)

var myCar = {

brand: ‘Toyota’,

run: function(){

console.log(‘running’);

;

Dùng Object constructor

Cách này sẽ sử dụng phương thức khởi tạo (constructor) của kiểu dữ liệu Object để tạo ra các object. Phương thức khởi tạo này là một hàm để tạo ra các object mới, ta dùng kèm từ khoá new:

//Tạo 1 đối tượng mới

var myApple = new Object();

//Thêm các thuộc tính cho đối tượng

myApple.color = ‘red’;

myApple.shape = ’round’;

myApple.howSweet = function(){

console.log(‘I am sweet’);

;

Trong Js, thì các thuộc tính của object có thể là các kiểu dữ liệu cơ bản, các phương thức, hay cũng có thể là các object con. Kiểu dữ liệu Object cho ta một cách sử dụng rất linh hoạt và mạnh mẽ.

Tạo hàng loạt các Object cùng loại như thế nào?

Ở trên, ta đã biết cách để tạo ra từng object riêng biệt, thế còn việc tạo hàng loạt các object giống nhau (có cùng tên thuộc tính và số lượng thuộc tính) như thế nào? Ta cũng có 2 cách để làm việc này: sử dụng mẫu khởi tạo, và sử dụng prototype.

Sử dụng mẫu khởi tạo

Cách này sử dụng từ khoá function để tạo ra một hàm khởi tạo đối tượng, dùng từ khoá this để gán các thuộc tính cho đối tượng:

function Fruit (_color, _name){

this.color = _color;

this.name = _name;

this.showName = function(){

console.log(this.name);

;

Với hàm khởi tạo này, ta có thể tạo hàng loạt các đối tượng kiểu Fruit như sau:

var mangoFruit = new Fruit(‘yellow’, ‘Mango’);

var appleFruit = new Fruit(‘red’, ‘Apple’);

Con trỏ this là một thứ rất thần thánh và kì quặc trong Javascript, bạn nên cẩn thận khi sử dụng nó. Bạn có thể ôn lại về this ở Link này: Con trỏ this trong Javascript

Sử dụng prototype

Thuộc tính prototype là một thứ rất đặc biệt trong Javascript, có thể tìm hiểu thêm ở ĐÂY, ta sẽ sử dụng nó để tạo hàng loạt đối tượng giống nhau như sau:

function Fruit (_color, _name){

;

Fruit.prototype.color = ‘general_color’;

Fruit.prototype.name = ‘general_name’;

Fruit.prototype.showName = function(){

console.log(this.name);

;

Với cách này thì ta cũng vẫn sẽ sử dụng hàm Fruit() để tạo ra các đối tượng object như cách ở trên:

var mangoFruit = new Fruit(‘yellow’, ‘Mango’);

var appleFruit = new Fruit(‘red’, ‘Apple’);

Thuộc tính prototype không chỉ được dùng duy nhất trong tình huống này. Do Javascript không phải là ngôn ngữ class-based (như PHP, C , C#, …) mà là kiểu object-based, do đó chúng ta không thể thực hiện việc tạo class và kế thừa như các ngôn ngữ hướng đối tượng thuần tuý. Tuy nhiên, thuộc tính prototype cho phép ta thực hiện nhiều việc ‘tương tự’ như class và kế thừa trong Javascript, nhưng thôi, ta sẽ bàn chi tiết về nó ở một topic khác.

Một cái nhìn chi tiết hơn về Object

Ta biết rằng Object là kiểu dữ liệu phức hợp trong Javascript, bởi vì phức hợp nên nó sẽ có nhiều điều thú vị.

Kiểu dữ liệu tham trị và tham chiếu

Sự khác biệt cơ bản giữa kiểu dữ liệu tham trị và kiểu tham chiếu đó là: giá trị của kiểu dữ liệu tham chiếu không được lưu trực tiếp tại biến, mà biến đó sẽ lưu một tham chiếu tới giá trị thực.

Các kiểu dữ liệu cơ bản trong Javascript là các kiểu dữ liệu tham trị, còn kiểu dữ liệu Object sẽ là kiểu dữ liệu tham chiếu. Minh hoạ kiểu tham trị như sau:

//Kiểu dữ liệu cơ bản lưu giá trị thực sự (tham trị)

var num = 1;

var otherNum = num; //bây giờ otherNum có giá trị là 1

//Thử thay đổi giá trị

num = 2;

console.log(num); // 2

console.log(otherNum); // 1

Như đã thấy ở trên, các kiểu dữ liệu cơ bản trong Javascript sẽ lưu giá trị theo kiểu tham trị. Ngược lại, kiểu dữ liệu Object sẽ lưu giá trị kiểu tham chiếu:

//Khai báo 2 đối tượng kiểu Object

var person = {name: “John” ;

var otherPerson = person;

//Thử thay đổi giá trị

person.name = “Peter”;

console.log(person.name); //Peter

console.log(otherPerson.name); //Peter

Như đã thấy, mặc dù thay đổi giá trị của biến ‘person’, nhưng giá trị của biến ‘otherPerson’ cũng bị thay đổi. Nguyên do của việc này là bởi các đối tượng Object lưu giá trị theo kiểu tham chiếu, tức là 2 biến này cùng tham chiếu tới 1 vùng giá trị.

Thuộc tính riêng và thuộc tính kế thừa của Object

Một cách khái quát, thuộc tính riêng (own property) là thuộc tính được định nghĩa tại bản thân của đối tượng (tại bản thân Object), thuộc tính kế thừa (inherited property) là những thuộc tính được kế thừa từ đối tượng prototype của Object đó.

Để kiểm tra một thuộc tính có thuộc object hay không (kể cả thuộc tính riêng và thuộc tính kế thừa), ta dùng toán tử in:

var school = {schoolName: ‘Havard’ ;

//kiểm tra thuộc tính

console.log(‘schoolName’ in school); //true

console.log(‘schoolType’ in school); //false

Để kiểm tra một thuộc tính có phải là thuộc tính riêng hay không, ta có thể dùng phương thức hasOwnProperty của Object.

//tạo mẫu khởi tạo

function Fruit(){ ;

Fruit.prototype.color = ‘general_color’;

//tạo đối tượng và thuộc tính riêng

var apple = new Fruit();

apple.name = ‘ownName’;

//kiểm tra thuộc tính

console.log(apple.hasOwnProperty(‘color’)); //false

console.log(apple.hasOwnProperty(‘name’)); //true

Ta có thể nhận định thêm rằng, các thuộc tính định nghĩa trong prototype sẽ được kế thừa tới mọi object, nhưng ta vẫn có thể thêm các thuộc tính riêng cho từng object khác nhau. Đây là một trong những đặc điểm rất đặc biệt của thuộc tính prototype trong Javascript.

Các đặc tính của thuộc tính (Property Attributes)

Ta đã hiểu thế nào là các thuộc tính của object, bây giờ ta hãy xem xét chi tiết hơn về các đặc tính của nó.

Trong tiếng Anh, người ta gọi các thuộc tính là property, còn đặc tính thì được gọi là attribute. Một thuộc tính sẽ có 4 đặc tính sau đây:

• Giá trị (value): Đây là đặc tính rõ thấy nhất, bởi vì mỗi thuộc tính đều mang 1 giá trị nào đó, có thể là giá trị cơ bản hoặc method.

• Tính Enumable: mang giá trị true/false, cho phép một thuộc tính được duyệt qua trong vòng lặp for-in.

• Tính configable: mang giá trị true/false, nói lên khả năng config như delete thuộc tính, thay đổi các đặc tính khác của thuộc tính, …

• Tính writable: mang giá trị true/false, cho phép ta thay đổi giá trị của thuộc tính hay không.

Nói một chút về việc xoá một thuộc tính của Object, ta có thể dùng toán tử delete để xoá một thuộc tính của đối tượng. Để lệnh delete được thực thi, ta cần xoá đúng vị trí thuộc tính được định nghĩa, tức là: thuộc tính riêng thì xoá tại đối tượng, thuộc tính kế thừa thì xoá tại đối tượng prototype.

Hi vọng mọi người sẽ hiểu thêm nhiều thứ về Object trong Javascript.

Post Views: 125
Previous Post

Prototype trong JavaScript

Next Post

Docker: Chưa biết gì đến biết dùng (Phần 1)

Related Posts

Sửa Nhanh Lỗi Laptop Windows 10 Sạc Pin Không Vào 60951215e059b.png
Phần cứng

Sửa nhanh lỗi laptop Windows 10 sạc pin không vào

11/05/2022
Làm Thế Nào để Xóa Một Phân Vùng Trên ổ đĩa Cứng Windows? 60951232be65c.png
Phần cứng

Làm thế nào để xóa một phân vùng trên ổ đĩa cứng Windows?

11/05/2022
Test Pin Laptop, Cách Kiểm Tra Pin Laptop đang ở Mức Nào Mà Không Cần Cài Phần Mềm 6095123831651.png
Phần cứng

Test pin laptop, cách kiểm tra pin laptop đang ở mức nào mà không cần cài phần mềm

11/05/2022
Hướng Dẫn Xử Lý Khi Key Bàn Phím Laptop Bị Hỏng 6095121ca32df.png
Phần cứng

Hướng dẫn xử lý khi key bàn phím laptop bị hỏng

11/05/2022
Nên Dùng Súng Loại Nào Trong Chiến Dịch Huyền Thoại? 6094aaf17f1da.png
Phần Mềm

Nên dùng súng loại nào trong Chiến Dịch Huyền Thoại?

07/05/2022
Hướng Dẫn Cài đặt Wtfast để Giảm Ping Khi Chơi Game Online, Khi đứt Cáp 6094aae16ee4b.png
Phần Mềm

Hướng dẫn cài đặt WTFast để giảm ping khi chơi game online, khi đứt cáp

07/05/2022
Next Post
Docker: Chưa Biết Gì đến Biết Dùng (phần 1) 60902d1233303.jpeg

Docker: Chưa biết gì đến biết dùng (Phần 1)

Bài mới nhất

Website Defacement Là Gì Và Cách Khắc Phục Hiệu Quả Cho Website 612d235622440.png

Website Defacement là gì và cách khắc phục hiệu quả cho website

12/05/2025
8 Cách Quản Lý Data Khách Hàng Hiệu Quả Cho Doanh Nghiệp 612d234c2b5ad.jpeg

8 cách quản lý data khách hàng hiệu quả cho doanh nghiệp

12/05/2025
Địa Chỉ Email Là Gì Và Cách để Tạo Lập địa Chỉ Mail Chuyên Nghiệp 612d23693d14c.jpeg

Địa chỉ email là gì và cách để tạo lập địa chỉ mail chuyên nghiệp

11/05/2025
Tự động Hóa Bán Hàng: Cách ứng Dụng Crm Vào Bán Hàng Và Marketing 612d0eb0e2b27.jpeg

Tự động hóa bán hàng: Cách ứng dụng CRM vào bán hàng và Marketing

11/05/2025
Remarketing Là Gì, Lợi ích Và Các Hiệu Quả Mà Hoạt động Này Mang Lại 612d0eb8a4bc4.jpeg

Remarketing là gì, lợi ích và các hiệu quả mà hoạt động này mang lại

10/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution