2009-12-16 36 views
76

Tôi đang học jQuery bằng cách cố gắng hiểu mã của người khác. Tôi gặp phải điều này:Cú pháp biến jquery

jQuery.fn.myFunc = function(options, callback) { 

//stuff 

    jQuery(this)[settings.event](function(e) { 
    var self = this, 
    $self = jQuery(this), 
    $body = jQuery("body"); 
    //etc. 
    } 

//more stuff 

} 

Hiểu biết của tôi là $ là đối tượng jQuery. Vậy tại sao đặt $ với $self$body? Và là self giống như $self?

Trả lời

195

$ self có ít việc phải làm với $, là bí danh cho jQuery trong trường hợp này. Một số người thích đặt một dấu đô la cùng với biến để tạo sự khác biệt giữa các đối tượng bình thường và các đối tượng jQuery.

dụ:

var self = 'some string'; 
var $self = 'another string'; 

Đây là những tuyên bố như hai biến khác nhau. Nó giống như đặt gạch dưới trước biến riêng tư.

Một mô hình hơi phổ biến là:

var foo = 'some string'; 
var $foo = $('.foo'); 

Bằng cách đó, bạn biết $ foo là một đối tượng jQuery cache sau này trong các mã.

+8

Rất rõ ràng. Tôi đánh giá cao bạn giải thích lý do tại sao một người nào đó có thể sử dụng quy ước $ var. – dnagirl

+0

Làm thế nào để bạn đối phó với bắt đầu biến với biến $ cho biến jquery và jslint? –

9

Không, chắc chắn là không. Nó chỉ là một tên biến khác. Số $() bạn đang nói đến thực sự là jQuery core function. $self chỉ là một biến. Bạn thậm chí có thể đổi tên nó thành foo nếu bạn muốn, điều này không thay đổi mọi thứ. $ (và _) là các ký tự pháp lý trong mã định danh Javascript.

Tại sao điều này được thực hiện nên thường chỉ là một số quy ước mã hoặc để tránh xung đột với từ khóa bị đảo ngược. Tôi thường sử dụng nó cho $this như sau:

var $this = $(this); 
7

tự và $ tự không giống nhau. Trước đây là đối tượng được trỏ đến bởi "this" và đối tượng jQuery thứ hai có "scope" là đối tượng được trỏ tới bởi "this". Tương tự, $ body không phải là phần tử DOM của cơ thể nhưng đối tượng jQuery có phạm vi là phần tử body.

26

Đây là JavaScript thuần túy.

Không có gì đặc biệt về $. Nó chỉ là một nhân vật có thể được sử dụng trong các tên biến.

var $ = 1; 
var $$ = 2; 
alert($ + $$); 

jQuery chỉ gán chức năng cốt lõi của nó cho biến được gọi là $. Mã bạn đã gán this cho biến cục bộ được gọi là self và kết quả gọi jQuery với this làm đối số cho biến toàn cục có tên là $self.

Rất xấu, bẩn, khó hiểu, nhưng $, self$self là tất cả các biến khác nhau có cùng tên.

+0

Các món ăn khác nhau, nhưng tôi không thấy nó xấu xí chút nào. Ký hiệu đô la đã được sử dụng để biểu thị $ STRINGS và các biến đặc biệt khác trong một thời gian dài. Chắc chắn sẽ áp dụng quy ước này. –

2

Ký hiệu đô la làm tiền tố trong tên var là cách sử dụng từ khái niệm hungarian notation.

Các vấn đề liên quan