Tôi đang cố gắng để có được các nguyên tắc làm chức năng kiểu jQuery chuỗi thẳng trong đầu của tôi. Ý tôi là:Chuỗi đối tượng/hàm cơ bản hoạt động như thế nào trong javascript?
var e = f1('test').f2().f3();
Tôi đã có một ví dụ để làm việc, trong khi một ví dụ khác thì không. Tôi sẽ đăng những người dưới đây. Tôi luôn luôn muốn tìm hiểu nguyên tắc cơ bản đầu tiên về cách thức hoạt động của một thứ gì đó để tôi có thể xây dựng trên nó. Cho đến bây giờ, tôi chỉ có một sự hiểu biết ngắn gọn và ngớ ngẩn về cách chuỗi hoạt động và tôi đang chạy vào các lỗi mà tôi không thể khắc phục sự cố một cách thông minh.
Những gì tôi biết:
- Chức năng phải trả lại bản thân, hay còn gọi là "trở lại này;"
- Chức năng có thể khóa phải nằm trong một hàm cha, hay còn gọi là jQuery, .css() là một phương thức con của jQuery(), do đó jQuery(). Css();
- Chức năng gốc phải trả về chính nó hoặc một bản sao mới của chính nó.
Ví dụ này làm việc:
var one = function(num){
this.oldnum = num;
this.add = function(){
this.oldnum++;
return this;
}
if(this instanceof one){
return this.one;
}else{
return new one(num);
}
}
var test = one(1).add().add();
Nhưng cái này không:
var gmap = function(){
this.add = function(){
alert('add');
return this;
}
if(this instanceof gmap) {
return this.gmap;
} else{
return new gmap();
}
}
var test = gmap.add();
Các chức năng không tự trả lại, chúng trả về đối tượng hỗ trợ các phương thức bạn đang chuỗi. Trong trường hợp jQuery, nó là nút đang được vận hành. – drudru
Yêu cầu mỗi hàm kết thúc bằng 'trả về kết quả này;'. –
@MarcB - Tôi biết, nhưng làm thế nào? –