Trong quá trình phát triển, chúng tôi sử dụng các đối tượng và chúng tôi luôn nhầm lẫn cách tiếp cận nào là tốt nhất. Đó là lý do chính khiến tôi quyết định viết một blog về nó, vì vậy tôi thực sự hy vọng trong tương lai gần, hầu hết các trở ngại của bạn sẽ được giải quyết và bạn sẽ tự tin hơn trong việc lựa chọn cách tiếp cận tốt nhất.
Trong blog này, tôi sẽ giải thích một số tính năng của đối tượng và tôi sẽ thực hiện một số so sánh, vì vậy hãy bắt đầu
Chuyển đổi so với đối tượng chữ
Chúng ta đều biết câu lệnh switch – case là gì và chúng ta đã sử dụng chúng ít nhất một lần trong đời, bất kể là ngôn ngữ lập trình nào. Nhưng vì chúng ta đang nói về JavaScript, bạn đã bao giờ tự hỏi liệu sử dụng nó có thông minh không?
Vâng, tất nhiên, câu trả lời là KHÔNG. Bây giờ bạn đang tự hỏi mình, thì đó phải là câu lệnh if-else, nhưng câu trả lời vẫn là KHÔNG. Cách tiếp cận tốt nhất là sử dụng các đối tượng
Hãy xem tại sao…
Các vấn đề
- vỏ công tắc
- Khó bảo trì dẫn đến việc gỡ lỗi và kiểm tra khó khăn
- Bạn buộc phải sử dụng break theo cách thủ công trong từng trường hợp
- lỗi lồng nhau
- Các hạn chế, như không cho phép dùng cùng một hằng trong hai trường hợp khác nhau…
- Trong JavaScript, mọi thứ đều dựa trên dấu ngoặc nhọn, nhưng không chuyển đổi
- Đánh giá mọi trường hợp cho đến khi tìm được trường hợp phù hợp
- Câu lệnh if-else
- Khó bảo trì dẫn đến việc gỡ lỗi và kiểm tra khó khăn
- Khó hiểu khi có logic phức tạp
- khó kiểm tra
- Đánh giá mọi câu lệnh cho đến khi tìm được câu đúng nếu bạn không kết thúc câu đó một cách rõ ràng
Theo những vấn đề này, giải pháp tốt nhất là các đối tượng. Lý do cho điều đó là những lợi thế mà các đối tượng đang cung cấp cho chúng tôi, như
- Bạn không bị buộc phải làm bất cứ điều gì
- Bạn có thể sử dụng các chức năng bên trong các đối tượng, điều đó có nghĩa là bạn linh hoạt hơn nhiều
- Bạn có thể sử dụng lợi ích đóng cửa
- Bạn đang sử dụng các đối tượng JavaScript tiêu chuẩn, giúp mã thân thiện hơn
- Cung cấp cho bạn khả năng đọc và bảo trì tốt hơn
- Vì cách tiếp cận các đối tượng giống như một bảng băm nên hiệu suất sẽ tốt hơn so với chi phí trung bình của trường hợp chuyển đổi
- Tất cả những ưu điểm này dẫn chúng ta đến kết luận rằng các đối tượng tự nhiên hơn và là một phần của nhiều mẫu thiết kế trong JavaScript trong đó trường hợp chuyển đổi là một cách mã hóa cũ
Hãy xem một ví dụ với các đối tượng trông như thế nào
function getById [id] { var ids = { 'id1': function [] { return 'Id 1'; }, 'id2': function [] { return 'Id 2'; }, 'default': function [] { return 'Default'; } } return [ids[id] || ids['default']][]; }; var ref = getById['id1'] console.log[ref] // Id 1 var ref1 = getById[] console.log[ref] // Default var ref1 = getById[‘noExistingId’] console.log[ref] // Default
hasOwnProperty[key] so với trong
hasOwnProperty[] – phương thức chỉ trả về Boolean hoặc true nếu đối tượng chứa thuộc tính đó làm thuộc tính riêng của nó
in – toán tử chỉ trả về Boolean hoặc true nếu đối tượng chứa thuộc tính đó làm thuộc tính riêng của nó hoặc trong chuỗi nguyên mẫu của nó
function TestObj[]{ this.name = 'TestName'; } TestObj.prototype.gender = 'male'; var obj = new TestObj[]; console.log[obj.hasOwnProperty['name']]; // true console.log['name' in obj]; // true console.log[obj.hasOwnProperty['gender']]; // false console.log['gender' in obj]; // true
Thuộc tính đối tượng
Có hai cách. ký hiệu dấu chấm và ký hiệu dấu ngoặc. Hầu hết các nhà phát triển thường tự hỏi họ nên sử dụng cách tiếp cận nào hoặc có thể có bất kỳ sự khác biệt nào không? . Hãy làm một cái nhìn tổng quan
ký hiệu dấu chấm
- s chỉ có thể là chữ và số, có nghĩa là nó chỉ có thể bao gồm hai ký tự đặc biệt “_” và “$”
- Mã định danh thuộc tính không thể bắt đầu bằng số và biến
ký hiệu khung
- Định danh thuộc tính phải là Chuỗi hoặc biến tham chiếu đến Chuỗi
- Mã định danh thuộc tính có thể chứa bất kỳ ký tự nào trong tên của chúng
var obj = { '$test': 'DolarValue', '%test': 'PercentageValue' … } console.log[obj["$test"]] // 'DolarValue' console.log[obj.$test] // 'DolarValue'
Cả hai sẽ cho cùng một kết quả vì cả hai đều hỗ trợ `$` trong tên của chúng, nhưng điều gì xảy ra nếu chúng ta sử dụng một ký tự đặc biệt khác như `%`?
console.log[obj["%test"]] // 'PercentageValue' console.log[obj.%test] // It will throw an error: Uncaught SyntaxError: Unexpected token ‘%’
Trong blog tiếp theo, tôi sẽ đề cập đến việc tối ưu hóa vòng lặp bằng cách sử dụng thuộc tính đối tượng và kiểm tra tốc độ mã