2012-02-21 36 views
45

Mã này cũng tham chiếu đến điều gì? Javascript 'dấu hai chấm' để gắn nhãn các chức năng ẩn danh?

queryString: function() { 

//some code 

} 

Tôi đã thử nghiệm nó trong WebConsole (Firefox) nhưng nó sẽ không thực hiện, vì vậy tôi nghĩ rằng nó không phải là tương đương với function queryString() {}.

Vì vậy, chính xác là gì?

+0

nên là: queryString = –

+4

được sử dụng để xác định các hàm trong các đối tượng hoặc các lớp, vì vậy tôi nghĩ bạn đã lấy nó ra khỏi phạm vi của đối tượng. – Dampsquid

Trả lời

57

Bạn đang thiếu một số mã ở đó, nhưng tôi giả định phần mình của một tuyên bố đối tượng như thế này:

var obj = { 
    queryString: function() { 
    //some code 
    } 
}; 
obj.queryString(); 

Nó gán một chức năng như một thuộc tính của một đối tượng chữ. Nó sẽ tương đương như sau:

var obj = {}; 
obj.queryString = function() { ... }; 
obj.queryString(); 

Nói chung, đối tượng cú pháp đen trông như thế này:

{ key: value, otherKey: otherValue }; 

Vì vậy, lý do này đã không làm việc trong giao diện điều khiển là nó đã không được đính kèm trong {} ký tự, biểu thị một đối tượng theo nghĩa đen. Và cú pháp này là CHỈ hợp lệ trong một đối tượng theo nghĩa đen.

4

: được sử dụng khi xác định đối tượng và thuộc tính của đối tượng.

var obj = { 
    queryString: function() { 
     //some code 
    } 
} 

Hiện tại obj.queryString là chức năng của bạn.

9

Đây có lẽ là bên trong một tuyên bố bản đồ/đối tượng như vậy:

var obj = { 
    queryString: function() { 
     alert('here'); 
    }, 
    eggs: function() { 
     alert('another function'); 
    } 
}; 

obj.queryString(); 
+0

Vì vậy, nó giống như một tài sản của đối tượng đó :) Cảm ơn bạn! – knownasilya

1

queryString: function() { 

//some code 

} 

có nghĩa là bạn có thể sử dụng chuỗi truy vấn() để gọi hàm mà nó đề cập đến. Tham chiếu kiểu này thường được sử dụng nếu bạn muốn định nghĩa một lớp (hoặc một lớp giả; P) trong javascript của bạn. Một cái gì đó như thế này,

var application= { namespace: {} }; 

application.namespace.class_name = function(){ 

    function constructor(){ 
    return { 
    exposed_property1 : property1, 
    exposed_property2 : property2, 
    ... 
    ... 
    } 
    } 
    //Write property/functions that you want to expose. 
    // Write rest of the function that you want private as function private(){} 
}; 

Vì vậy, tại anyother một phần của mã bạn có thể tạo các đối tượng cho class_name và sử dụng nó để truy cập property1, property2 vv

3

Đó là một nhãn https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

var i, j; 

loop1: 
for (i = 0; i < 3; i++) {  //The first for statement is labeled "loop1" 
    loop2: 
    for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2" 
     if (i == 1 && j == 1) { 
     continue loop1; 
     } 
     console.log("i = " + i + ", j = " + j); 
    } 
} 

// Output is: 
// "i = 0, j = 0" 
// "i = 0, j = 1" 
// "i = 0, j = 2" 
// "i = 1, j = 0" 
// "i = 2, j = 0" 
// "i = 2, j = 1" 
// "i = 2, j = 2" 
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2" 
Các vấn đề liên quan