Ai đó có thể cho tôi ví dụ về xác thực nhập văn bản bằng Duck trong Javascript? Tôi đang khám phá OO javascript và tôi đã nghe nói về gõ vịt nhưng không thể nhìn thấy bất kỳ ví dụ về nó đang được sử dụng trong javascript.Nhập văn bản vào Javascript
Trả lời
Liên kết thứ hai đưa ra ví dụ về kiểu mẫu giống như kiểu gõ chữ trong js. Không nói rằng tôi khuyên bạn nên làm điều này, nhưng ... tốt, bạn yêu cầu nó. ;)
Trong lập trình máy tính với ngôn ngữ lập trình hướng đối tượng, vịt gõ là một phong cách năng động gõ vào đó dòng bộ của một đối tượng của phương pháp và tài sản xác định ngữ nghĩa có giá trị, chứ không phải hơn các sản phẩm kế thừa từ một lớp cụ thể hoặc triển khai giao diện cụ thể.
Phương pháp đơn giản nhất là để xác định hợp đồng không chính thức và chỉ cần dựa vào các nhà phát triển ở mỗi bên của giao diện biết những gì họ đang làm. Dave Thomas đã đưa ra cách tiếp cận này tên của "đánh máy vịt" —nếu nó đi như một con vịt và nó quacks giống như một con vịt, thì đó là một con vịt. Tương tự với giao diện
Shape
của chúng tôi, nếu nó có thể tính toán khu vực và chu vi, thì đó làShape
.
Rực rỡ, cảm ơn câu trả lời. Bây giờ tôi hiểu tôi nghĩ rằng tôi sẽ dính vào thừa kế tiêu chuẩn của tôi bằng cách sử dụng chuỗi nguyên mẫu. –
Ví dụ js trong wikipedia, không kiểm tra bất kỳ "lượt đi" nào và "truy vấn" !! Chẳng phải ví dụ đó sẽ được cập nhật? – eminemence
Nguyên tắc của "Duck Typing" là
Nếu nó trông giống như một con vịt, bơi như một con vịt, và quacks như một con vịt, sau đó nó có thể là một con vịt.
Trong ngôn ngữ lập trình hướng đối tượng (C++) để làm cho cả hai đối tượng trông giống như một con vịt, bạn phải kế thừa lớp của chúng từ một lớp "giao diện" chung, do đó trình biên dịch sẽ cho phép bạn gọi duck
phương pháp trên chúng. Đó được gọi là gõ mạnh.
Bây giờ đây là cách nó được thực hiện trong Javascript:
var duck = {
appearance: "feathers",
quack: function duck_quack(what) {
print(what + " quack-quack!");
},
color: "black"
};
var someAnimal = {
appearance: "feathers",
quack: function animal_quack(what) {
print(what + " whoof-whoof!");
},
eyes: "yellow"
};
function check(who) {
if ((who.appearance == "feathers") && (typeof who.quack == "function")) {
who.quack("I look like a duck!\n");
return true;
}
return false;
}
check(duck); // true
check(someAnimal); // true
Nầy, check
chức năng kiểm tra xem các đối tượng thông qua trông giống như một con vịt (nó sẽ kiểm tra sự xuất hiện và khả năng quack). Chúng tôi chuyển hai đối tượng khác nhau cho nó và nó sẽ trả về true
trên cả hai. Bên cạnh sự xuất hiện và quacking chúng có thể là những thứ hoàn toàn khác nhau, nhưng trong hàm này, chúng hoạt động theo cùng một cách (có giao diện chung), chúng trông giống như một "con vịt". Chúng ta có thể gọi phương thức quack
trên cả hai đối tượng (và ai quan tâm đến chúng thực sự là gì).
Ví dụ về nhập vịt trong JavaScript là iterables. JavaScript thực sự không có loại được gọi là Iterable
, nhưng nó có định nghĩa cho một đối tượng, có thể lặp lại được.
Để có iterable, một đối tượng phải thực hiện các phương pháp @@ iterator
Đây là yêu cầu để gõ vịt. Nếu một đối tượng thực hiện một phương thức, được định nghĩa trong một giao diện, đối tượng có thể được sử dụng ở những nơi mà kiểu giao diện được chấp nhận. Đối với iterables đây là trường hợp trong vòng
for (let value of iterable) {
}
và mảng
[...iterable]
- 1. Thêm văn bản vào vùng văn bản sử dụng javascript
- 2. jquery ctrl + nhập như nhập vào vùng văn bản
- 3. Nhập văn bản vào XNA (để nhập tên, trò chuyện)
- 4. Các trường nhập văn bản Javascript hiển thị văn bản hướng dẫn (giữ chỗ)
- 5. Javascript để Jquery, thêm văn bản vào đầu vào onclick
- 6. Styling nhập văn bản CSS
- 7. Nhập khóa trong văn bản
- 8. Chỉ cho phép nhập số vào Hộp văn bản WPF
- 9. Đăng nhập bằng Python vào tiện ích văn bản Tkinter
- 10. hạn chế ký tự để nhập vào hộp văn bản
- 11. vba: Nhập tệp văn bản vào bảng excel
- 12. Đăng nhập bằng văn bản Android vào tệp
- 13. Cách nhập văn bản vào hộp tổ hợp?
- 14. Chọn tất cả văn bản trong nhập văn bản HTML khi nhấp vào
- 15. Làm cách nào để nhập kiểu văn bản khi nhập?
- 16. Làm thế nào để viết văn bản vào một tập tin văn bản bằng Photoshop JavaScript?
- 17. Chèn văn bản vào con trỏ trong vùng văn bản, với Javascript
- 18. Kéo và thả HTML5: Tải tệp văn bản vào hộp văn bản có JavaScript
- 19. Cách tự động nối văn bản vào văn bản được sao chép bằng JavaScript
- 20. Thêm một chuỗi văn bản vào một trường nhập khi người dùng nhấp vào một nút
- 21. Chèn HTML vào nút văn bản với Javascript
- 22. Màu văn bản của trường nhập liệu CSS của văn bản được nhập
- 23. Trình chiếu văn bản Javascript
- 24. Javascript "hình mờ" cho hộp văn bản
- 25. Sự kiện hộp văn bản Javascript
- 26. Làm cách nào để không cho phép nhập vào trường nhập văn bản bằng jQuery?
- 27. Nối văn bản để trường nhập
- 28. Chỉ mẫu văn bản nhập Cyrillic
- 29. javascript: Tắt Văn bản Chọn
- 30. jQuery - trên văn bản nhập thay đổi
vịt gõ không hoạt động rất tốt trong javascript- đối tượng của bạn có thể quack như một số dấu chấm động, nhưng nó có thể cũng giống như có khả năng quack như một chuỗi hoặc một boolean. – kennebec
http://stackoverflow.com/a/12763070/822138 có một số ví dụ và thảo luận hay. – sam