Prototype trong JavaScript là gì? Cách sử dụng và thiết lập chi tiết

Tác giảPhương Ly
Năm2025

Chủ đề

prototype-in-js

Bạn là người mới học lập trình và vẫn còn bối rối với những khái niệm như JavaScript hay Prototype? Đừng lo, đây là một trong những kiến thức nền tảng quan trọng mà bất kỳ lập trình viên nào cũng cần nắm vững để phát triển kỹ năng lập trình hiệu quả. Trong bài viết này, HomeNest sẽ giúp bạn hiểu rõ Prototype. 

Khái niệm Prototype là gì?

Prototype là một cơ chế quan trọng giúp hiện thực hóa lập trình hướng đối tượng (OOP) trong JavaScript. Thay vì sử dụng class như các ngôn ngữ truyền thống (Java, C++), JavaScript vận hành việc kế thừa thông qua một hệ thống gọi là Prototype-based Inheritance – tức là các object có thể kế thừa lẫn nhau thông qua prototype.

. Đối với các hàm (function), chúng có thêm một thuộc tính đặc biệt là prototype, giúp bạn định nghĩa các thuộc tính và phương thức mà các đối tượng được tạo từ hàm đó sẽ kế thừa.

Nói một cách đơn giản:
👉 Prototypemột object đặc biệt cho phép bạn chia sẻ thuộc tính và phương thức chung cho tất cả các instance được tạo ra từ một hàm khởi tạo.

Những điểm cần ghi nhớ về Prototype

  • Trong JavaScript, function cũng là object, vì vậy nó cũng có thể sở hữu thuộc tính – trong đó prototype là một thuộc tính đặc biệt.

  • Khi bạn sử dụng một hàm khởi tạo (constructor function) để tạo object, bạn có thể gán các thuộc tính/method vào constructor.prototype để mọi instance đều kế thừa.

  • Mỗi object được tạo ra sẽ có một liên kết tới một prototype object, gọi là prototype chain. Thông qua liên kết này, object có thể truy cập các thuộc tính/phương thức mà bản thân nó không trực tiếp sở hữu.

  • Để truy cập prototype của một object, bạn có thể dùng thuộc tính __proto__ (không khuyến khích trong thực tế) hoặc thông qua Object.getPrototypeOf(obj) (cách chuẩn ES6+).

Ví dụ minh họa:

function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log(“Hello, I am “ + this.name);
};const john = new Person(“John”);
john.sayHello(); // Output: Hello, I am John

Trong ví dụ trên:

  • Person.prototype.sayHello được định nghĩa một lần nhưng được chia sẻ bởi tất cả các object được tạo từ Person.

  • Điều này giúp tiết kiệm bộ nhớ và duy trì sự nhất quán về hành vi.

Các cách để thiết lập Prototype

prototype-in-js

Có rất nhiều cách để thiết lập nên prototype của object trong JavaScript. Trong đó có hai cách phổ biến, thường được sử dụng là: Object.create ( ) và constructor.

Thiết lập Prototype bằng Object.create()

Object.create() là một phương thức mạnh mẽ trong JavaScript cho phép bạn tạo một đối tượng mới với một prototype đã được chỉ định sẵn. Cách làm này giúp thiết lập mối quan hệ kế thừa rõ ràng và linh hoạt giữa các object.

👉 Cú pháp:

Object.create(proto);

Trong đó proto là object sẽ được dùng làm prototype cho object mới được tạo.

Ví dụ minh họa:

const personPrototype = {
greet() {
console.log('Hello!');
}
};
const carl = Object.create(personPrototype);
carl.greet(); // Output: Hello!

📌 Giải thích:

  • personPrototype là một object chứa phương thức greet().

  • carl được tạo bằng Object.create(personPrototype), tức là carl kế thừa mọi thuộc tính và phương thức từ personPrototype.

  • Khi gọi carl.greet(), JavaScript sẽ không tìm thấy phương thức greet() trực tiếp trong carl, nên nó tra cứu theo prototype chain và tìm thấy trong personPrototype.

Lưu ý:

  • Object.create() không sao chép thuộc tính, mà tạo ra một liên kết prototype.

  • Rất hữu ích trong các trường hợp muốn chia sẻ logic chung giữa nhiều object mà không dùng constructor function hay class.

Thiết lập Prototype bằng Constructor Function

Trong JavaScript, mọi hàm đều có một thuộc tính mặc định là prototype. Khi bạn sử dụng một hàm dưới dạng constructor (tức là gọi bằng từ khóa new), đối tượng được tạo ra sẽ tự động kế thừa các thuộc tính và phương thức từ prototype của constructor đó.

🔧 Cách hoạt động:

Khi bạn gán một object mới cho Constructor.prototype, tất cả các instance được tạo từ constructor đó sẽ chia sẻ chung prototype mới này.

Ví dụ:

const personPrototype = {
greet() {
console.log(`Hello, my name is ${this.name}!`);
}
};
function Person(name) {
this.name = name;
}// Gán prototype mới cho constructor
Person.prototype = personPrototype;

// Đặt lại constructor chính xác (vì gán prototype mới đã làm mất constructor gốc)
Person.prototype.constructor = Person;

// Tạo một instance
const alice = new Person(“Alice”);
alice.greet(); // Output: Hello, my name is Alice!

📌 Giải thích:

  1. personPrototype: là object chứa phương thức greet().

  2. Person: là constructor function để tạo các đối tượng có thuộc tính name.

  3. Person.prototype = personPrototype: thiết lập object personPrototype làm prototype chính thức cho mọi đối tượng được tạo bằng new Person().

  4. Person.prototype.constructor = Person: bắt buộc phải khôi phục lại constructor, bởi sau khi gán lại prototype, thuộc tính constructor mặc định sẽ bị mất (trỏ về Object thay vì Person).

✅ Ưu điểm:

  • Dễ tổ chức code theo kiểu hướng đối tượng.

  • Chia sẻ phương thức hiệu quả (không tạo lại trên mỗi instance).

  • Hỗ trợ kế thừa logic từ object mẫu (prototype-based inheritance).

Prototype và Cơ Chế Kế Thừa Trong JavaScript

Một trong những điểm mạnh quan trọng nhất của Prototype chính là khả năng kế thừa. Trong JavaScript, đặc biệt là các phiên bản trước ES6 (chưa hỗ trợ cú pháp class), việc hiện thực mô hình lập trình hướng đối tượng (OOP) hoàn toàn phụ thuộc vào cơ chế kế thừa qua prototype.

Vì sao Prototype lại quan trọng?

Trước khi có class (từ ES6 trở đi), JavaScript không có hệ thống kế thừa theo class như các ngôn ngữ OOP truyền thống như Java hay C++. Do đó, để mở rộng và tái sử dụng mã, các lập trình viên sử dụng cơ chế prototype-based inheritance – kế thừa dựa trên nguyên mẫu.

Cách hoạt động của kế thừa qua Prototype:

  1. Tạo một hàm khởi tạo (constructor function) để định nghĩa khuôn mẫu cho các đối tượng.

  2. Gán các thuộc tính và phương thức vào prototype của hàm khởi tạo, giúp mọi instance từ hàm đó đều có thể truy cập.

  3. Khi khởi tạo một instance mới bằng new, đối tượng đó sẽ kế thừa toàn bộ thuộc tính, phương thức từ prototype của constructor.

Ví dụ minh họa:

function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function () {
console.log(`${this.name} makes a sound.`);
};const dog = new Animal(“Buddy”);
dog.speak(); // Output: Buddy makes a sound.


Ưu điểm của kế thừa bằng Prototype:

  • Tối ưu bộ nhớ: các phương thức không được nhân bản trên mỗi instance, mà dùng chung qua prototype.

  • Dễ mở rộng hệ thống: chỉ cần cập nhật prototype, mọi đối tượng liên quan đều được kế thừa tự động.

  • Cơ chế kế thừa linh hoạt, không bị ràng buộc như class-based.

Tóm lại, prototype là nền tảng cốt lõi cho hệ thống kế thừa trong JavaScript truyền thống. Nó giúp ngôn ngữ này có thể mô phỏng lập trình hướng đối tượng ngay cả khi chưa có class. Hiểu và vận dụng tốt cơ chế prototype là kỹ năng bắt buộc đối với mọi lập trình viên JavaScript.

Cách Sử Dụng Prototype Trong JavaScript

js-prototype

Trong JavaScript, Prototype hoạt động theo hai cách chính:

  1. Thêm thuộc tính vào prototype của một object (mở rộng đối tượng).

  2. Truy xuất thuộc tính thông qua chuỗi nguyên mẫu (prototype chain) – cách JavaScript Engine tìm kiếm thuộc tính.

1. Thêm thuộc tính vào Prototype

Khi bạn tạo một object thông qua hàm khởi tạo (constructor function), bạn có thể gắn thêm các thuộc tính hoặc phương thức vào prototype của hàm đó. Điều này giúp tất cả các instance (đối tượng được tạo ra từ constructor) đều kế thừa những thuộc tính hoặc phương thức này mà không cần định nghĩa lại.

function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function () {
console.log(`Hello, I’m ${this.name}`);
};const john = new Person(“John”);
john.sayHello(); // Output: Hello, I’m John

2. Cách JavaScript Engine tìm thuộc tính (Prototype Chain)

Khi bạn truy cập một thuộc tính trong object, JavaScript Engine sẽ tìm thuộc tính đó theo chuỗi kế thừa:

  • Nếu thuộc tính tồn tại trong object hiện tại → trả về ngay.

  • Nếu không có → JavaScript tiếp tục tìm trong [[Prototype]] (thuộc tính prototype ẩn) của object đó.

  • Quá trình này lặp lại đến khi thuộc tính được tìm thấy hoặc chuỗi kế thừa kết thúc (gặp null).

console.log(john.toString());
// toString không có trong john → tìm trong Object.prototype → tìm thấy

Kết luận

Qua bài viết, HomeNest hy vọng bạn đã hiểu rõ:

  • Prototype là gì.

  • Cách thiết lập và sử dụng prototype trong JavaScript.

  • Cơ chế kế thừa theo chuỗi nguyên mẫu (prototype chain).

Việc nắm vững kiến thức về Prototype sẽ giúp bạn khai thác tối đa sức mạnh của JavaScript và lập trình theo mô hình hướng đối tượng một cách hiệu quả hơn. Nếu bạn đang học JavaScript một cách nghiêm túc – hãy bắt đầu với Prototype ngay hôm nay.

FAQ – Giải đáp nhanh về Prototype trong JavaScript

Prototype trong JavaScript là gì?

Prototype là một cơ chế giúp các object trong JavaScript kế thừa thuộc tính và phương thức từ nhau. Mỗi object đều liên kết với một prototype object thông qua [[Prototype]].

Làm sao để truy cập vào prototype của một object?

Bạn có thể dùng Object.getPrototypeOf(obj) hoặc obj.__proto__ (không khuyến khích vì không chính thức) để xem prototype của một object.

Khác nhau giữa __proto__prototype là gì?

  • prototype: là thuộc tính của function, dùng để gán thuộc tính/method cho tất cả object tạo từ function đó.

  • __proto__: là thuộc tính của object, dùng để trỏ tới prototype của function khởi tạo ra object đó.

Prototype có giống với class không?

Không hoàn toàn giống. Prototype là nền tảng kế thừa trong JavaScript từ trước khi có class (ES6). Class chỉ là cú pháp mới giúp viết dễ hơn, nhưng vẫn dựa trên nguyên lý prototype.

Có thể kế thừa nhiều cấp bằng prototype không?

Có. JavaScript hỗ trợ kế thừa theo chuỗi (prototype chain). Một object có thể kế thừa từ một prototype, prototype đó lại kế thừa từ một prototype khác, v.v.

Khi nào nên dùng prototype thay vì định nghĩa trực tiếp trong constructor?

Dùng prototype để chia sẻ method giữa nhiều instance, giúp tiết kiệm bộ nhớ và dễ bảo trì. Chỉ nên định nghĩa thuộc tính riêng biệt trong constructor.

Bài viết mới nhất

Xem tất cả
Thiết kế app cho công ty khởi nghiệp
GIẢI PHÁP DOANH NGHIỆPMOBILE APPPHƯƠNG PHÁP PHÁT TRIỂN

Thiết kế app cho các công ty khởi nghiệp giúp tối ưu chi phí và hiệu quả

Ngân sách hạn hẹp và rủi ro lỗi hệ thống là hai rào cản lớn nhất khi các doanh nghiệp mới bắt đầu triển khai nền tảng di động. Bài viết này phân tích trực diện chiến lược thiết kế app cho công ty khởi nghiệp với tiêu chí tối ưu hóa chi phí và nguồn lực. Bằng cách áp dụng phương pháp MVP, loại bỏ các yếu tố đồ họa rườm rà và chuẩn hóa luồng dữ liệu ngay từ đầu, doanh nghiệp có thể sở hữu một ứng dụng thực chiến giúp tự động hóa vận hành, cắt giảm chi phí trung gian mà không phải đối mặt với rủi ro đập đi xây lại.

Hữu Trí
May 16, 202616
Gia Công Phần Mềm: Khái Niệm, Quy Trình Và Giải Pháp Cho Doanh Nghiệp
GIẢI PHÁP DOANH NGHIỆP

Gia Công Phần Mềm: Khái Niệm, Quy Trình Và Giải Pháp Cho Doanh Nghiệp

Gia công phần mềm đang trở thành giải pháp chiến lược giúp doanh nghiệp tối ưu chi phí, rút ngắn thời gian phát triển sản phẩm và tiếp cận đội ngũ công nghệ chất lượng cao mà không cần xây dựng bộ phận IT nội bộ quy mô lớn. Tuy nhiên, để dự án outsourcing đạt hiệu quả dài hạn, doanh nghiệp cần lựa chọn đúng mô hình hợp tác, đánh giá kỹ năng lực đối tác, quy trình làm việc, tiêu chuẩn bảo mật và khả năng hỗ trợ sau triển khai. Một đối tác outsourcing uy tín không chỉ cung cấp nguồn lực kỹ thuật, mà còn đóng vai trò như đội ngũ công nghệ đồng hành cùng sự phát triển bền vững của doanh nghiệp.

Phương Ly
May 9, 202631
Báo Giá Phát Triển Phần Mềm Theo Yêu Cầu Mới Nhất
PHẦN MỀM

Báo Giá Phát Triển Phần Mềm Theo Yêu Cầu Mới Nhất

Chi phí phát triển phần mềm theo yêu cầu năm 2026 không có một mức cố định mà phụ thuộc vào phạm vi nghiệp vụ, độ phức tạp kỹ thuật, yêu cầu bảo mật và mô hình triển khai. Để kiểm soát ngân sách hiệu quả, doanh nghiệp cần lựa chọn đúng mô hình hợp tác (Fixed Price, Time & Material hoặc Dedicated Team), đồng thời ưu tiên đối tác có quy trình báo giá minh bạch, cam kết rõ ràng về source code, bảo mật dữ liệu và hỗ trợ sau triển khai. Một hệ thống được đầu tư đúng ngay từ đầu sẽ giúp doanh nghiệp tối ưu vận hành, dễ mở rộng và tạo lợi thế cạnh tranh lâu dài.

Phương Ly
May 9, 202637
No CodeLow Code là gì Giải pháp số hóa cho doanh nghiệp
GIẢI PHÁP DOANH NGHIỆP

No Code/Low Code là gì? Giải pháp số hóa cho doanh nghiệp

No Code và Low Code là giải pháp giúp doanh nghiệp tăng tốc chuyển đổi số, rút ngắn thời gian phát triển ứng dụng và giảm phụ thuộc vào nguồn lực lập trình. Tuy nhiên, để đạt hiệu quả lâu dài, doanh nghiệp cần lựa chọn đúng bài toán, kết hợp linh hoạt với phát triển truyền thống và xây dựng chiến lược công nghệ phù hợp với quy mô, mục tiêu tăng trưởng.

Phương Ly
May 7, 202619
Machine Learning là gì? Cách triển khai một bài toán ML cơ bản từ A–Z
PHƯƠNG PHÁP PHÁT TRIỂN

Machine Learning là gì? Cách triển khai một bài toán ML cơ bản từ A–Z

Machine Learning không chỉ là xu hướng công nghệ mà là một kỹ năng cốt lõi trong thời đại dữ liệu. Để áp dụng hiệu quả, bạn không cần bắt đầu từ những mô hình phức tạp mà nên tập trung vào việc hiểu rõ quy trình: dữ liệu → xử lý → mô hình → đánh giá. Khi nắm vững nền tảng này, bạn hoàn toàn có thể mở rộng sang các bài toán nâng cao và xây dựng những ứng dụng thực tế có giá trị.

Phương Ly
May 7, 202688
cicd-devops-vippro
PHƯƠNG PHÁP PHÁT TRIỂN

CI/CD là gì? Giải pháp tăng tốc phát triển phần mềm hiện đại

CI/CD không chỉ là giải pháp tự động hóa quy trình phát triển phần mềm mà còn là nền tảng quan trọng giúp doanh nghiệp xây dựng quy trình DevOps hiện đại, nhanh chóng và ổn định hơn. Việc áp dụng CI/CD giúp đội ngũ phát hiện lỗi sớm, tăng tốc độ triển khai, giảm rủi ro khi release và nâng cao chất lượng sản phẩm. Trong bối cảnh phát triển phần mềm liên tục thay đổi, thành thạo CI/CD đang trở thành kỹ năng quan trọng giúp doanh nghiệp tối ưu vận hành công nghệ và nâng cao năng lực cạnh tranh trên thị trường số.

Phương Ly
May 7, 202632

Kết nối với chúng tôi

Khởi Tạo Dự Án Của Bạn Ngay Hôm Nay

Liên hệ hợp tác

Hoặc gửi mail trực tiếp tới:

  • Phản hồi nhanh chóng trong 24h.

  • Làm việc trực tiếp với chuyên gia.

  • Tư vấn chiến lược rõ ràng.

Liên hệ HomeNest Việt Nam - Giải pháp công nghệ hàng đầu Việt Nam
Liên hệ tư vấn dự án qua Zalo - HomeNest Việt Nam