Nguyên mẫu javascript là gì

Ở bài trước, mình đã nói về khái niệm đối tượng và cú đánh – một số khái niệm cơ bản trong JavaScript. Trong bài viết này, mình sẽ giải thích khái niệm nguyên mẫu – một khái niệm khá phức tạp, dễ làm phát điên đầu các nhà phát triển front-end

Prototype là cái đếu gì?

Khi một nhà phát triển khác cứ đi theo và hỏi bạn “Prototype là cái đếu gì?”, hãy trả lời nó. Là cái đầu cha mày, hỏi suốt. Câu trả lời này có phần hơi bố láo nhưng lại khá chính xác, có thể hiểu nôm na nguyên mẫu là khuôn hoặc là cha của một đối tượng

Trong JavaScript, except undefined, full set type but all are object. Các kiểu string, number, boolean times as object format String, Number, Boolean. Array is object format Array, function is object format Function. Nguyên mẫu của mỗi đối tượng chính là cha của nó, cha của Chuỗi là Chuỗi. nguyên mẫu, cha của Số là Số. nguyên mẫu, của Mảng là Mảng. nguyên mẫu

Trong JavaScript, kế thừa được thực hiện thông qua nguyên mẫu. Khi ta gọi thuộc tính hoặc chức năng của một đối tượng, JavaScript sẽ tìm trong đối tượng chính đó, nếu không có thì tìm lên cha của nó. Do đó, ta có thể gọi các hàm thànhUpperCase, trim in String is do các hàm đã tồn tại trong String. nguyên mẫu

Khi ta thêm hàm cho nguyên mẫu, toàn bộ những thằng con của nó cũng học được hàm tương tự


Tệp này chứa văn bản Unicode hai chiều có thể được diễn giải hoặc biên dịch khác với nội dung hiển thị bên dưới. Để xem lại, hãy mở tệp trong trình chỉnh sửa hiển thị các ký tự Unicode bị ẩn.
Tìm hiểu thêm về ký tự Unicode hai chiều

Hiển thị ký tự ẩn





var str = 'abc'; // str is string, cha it is String. nguyên mẫu// chuỗi nhân đôi được đưa vàoChuỗi. nguyên mẫu. trùng lặp = chức năng[] { return this + this ; }bảng điều khiển. log[str. trùng lặp[]]; // Tìm thấy hàm Duplicate Strong Prototype

xem thô

nguyên mẫu1. js

được lưu trữ với ❤ ​​bởi GitHub

Như mình đã nói, Array, Number hay String có cha là Object, vậy chúng đều có các hàm như constructor, hasOwnProperty, toString thuộc về Object. nguyên mẫu

Nhắc lại một chút kiến ​​thức trong bài viết trước về đối tượng. Ta có 2 cách để khởi tạo đối tượng, đó là sử dụng object literal và Constructor Function. Nếu sử dụng đối tượng theo nghĩa đen, đối tượng được tạo ra sẽ có nguyên mẫu là Đối tượng. nguyên mẫu. If used constructor function, object will have a new prototype, new prototype this next Object. nguyên mẫu


Tệp này chứa văn bản Unicode hai chiều có thể được diễn giải hoặc biên dịch khác với nội dung hiển thị bên dưới. Để xem lại, hãy mở tệp trong trình chỉnh sửa hiển thị các ký tự Unicode bị ẩn.
Tìm hiểu thêm về ký tự Unicode hai chiều

Hiển thị ký tự ẩn





var person = {firstName: 'Hoang',lastName: 'Pham',showName: function[] {console.log[this.firstName + ' ' + this.lastName];}}; // object này có prototype là Object.prototypefunction Person[firstName, lastName] {this.firstName = firstName;this.lastName = lastName;this.showName = function[] {console.log[this.firstName + ' ' + this.lastName];};}var otherPerson = new Person['Hoang', 'Pham']; // object này có prototype là Person.prototype// Prototype mới: Person.prototype được tạo ra// Person.prototype kế thừa Object.prototype

xem thô

prototype_create. js

được lưu trữ với ❤ ​​bởi GitHub

Những đối tượng được tạo ra bằng cách gọi new Person[] đều có nguyên mẫu là Person. nguyên mẫu. Nếu muốn thêm trường hoặc hàm cho các đối tượng này, chỉ cần thêm 1 lần vào nguyên mẫu là xong. Hiểu nôm na thì nguyên mẫu cũng có vài phần giống với lớp, mỗi tội sida hơn


Tệp này chứa văn bản Unicode hai chiều có thể được diễn giải hoặc biên dịch khác với nội dung hiển thị bên dưới. Để xem lại, hãy mở tệp trong trình chỉnh sửa hiển thị các ký tự Unicode bị ẩn.
Tìm hiểu thêm về ký tự Unicode hai chiều

Hiển thị ký tự ẩn





chức năng Người[FirstName, Họ] {cái này. firstName = firstName;this .lastName = lastName;}Person.prototype.love = function[] { console.log['XXX'] };var otherPerson = new Person['Hoang', 'Pham']; // object này có prototype là Person.prototypeotherPerson.love[]; // XXX

xem thô

prototype_add. js

được lưu trữ với ❤ ​​bởi GitHub

Prototype dùng để làm gì?

Tại sao lại đẻ ra cái khái niệm nguyên mẫu này làm gì? . Trong JavaScript không có khái niệm về lớp, do vậy, để kế thừa các trường/hàm của một đối tượng, ta phải sử dụng nguyên mẫu


Tệp này chứa văn bản Unicode hai chiều có thể được diễn giải hoặc biên dịch khác với nội dung hiển thị bên dưới. Để xem lại, hãy mở tệp trong trình chỉnh sửa hiển thị các ký tự Unicode bị ẩn.
Tìm hiểu thêm về ký tự Unicode hai chiều

Hiển thị ký tự ẩn





chức năng Người[] {cái này. firstName = 'Per';cái này. Họ = 'con trai';cái này. sayName = hàm[] { trả lại cái này. tên + ' ' + cái này. Họ };}/ / Viết một Hàm xây dựng kháchàm SuperMan[firstName, Họ] {này.firstName = firstName;this.lastName = lastName;}// Ta muốn SuperMan sẽ kế thừa các thuộc tính của Person// Sử dụng prototype để kế thừaSuperMan.prototype = new Person[];// Tạo một object mới bằng Constructor Functionvar sm = new SuperMan['Hoang', 'Pham'];sm.sayName[]; // Hoang Pham. Hàm này kế thừa từ prototype của Person

xem thô

kế thừa. js

được lưu trữ với ❤ ​​bởi GitHub

Nói nôm na, nguyên mẫu có phần giống lớp, được sử dụng để thực hiện kế thừa [interitance] trong JavaScript. Viết tới đây bỗng dưng mình chóng mặt hoa mắt rồi, bài hôm nay kết thúc sớm nhé. Ở các bài viết sau, mình sẽ nói về OOP trong JavaScript, rồi các bạn sẽ nhận ra JavaSscript sida đến thế nào

Bài viết có tham khảo một phần ở. http. //javascriptsexy. com/javascript-prototype-in-plain-detailed-ngôn ngữ/. Một bài viết khá hay và hài hước về nguyên mẫu mà các bạn nên đọc. http. //kipalog. com/posts/prototype-la-khi-gi-

Chủ Đề