名称为$的函数

时间:2013-02-27 06:50:10

标签: javascript function

有人可以解释这三个函数是如何相互关联的吗?$函数在这里做了什么?它有两个定义吗?

socket.onopen = function(){
    log("Welcome - status "+this.readyState); 
};

function $(id){ 
   return document.getElementById(id); 
}

function log(msg){ 
    $("log").innerHTML+="<br>"+msg; 
}

这些函数编写如下客户端代码:

var socket;

function init() {
    var host = "ws://localhost:12345/websocket/server.php";
    try {
        socket = new WebSocket(host);
        log('WebSocket - status ' + socket.readyState);
        socket.onopen = function (msg) {
            log("Welcome - status " + this.readyState);
        };
        socket.onmessage = function (msg) {
            log("Received: " + msg.data);
        };
        socket.onclose = function (msg) {
            log("Disconnected - status " + this.readyState);
        };
    } catch (ex) {
        log(ex);
    }
    $("msg").focus();
}

function send() {
    var txt, msg;
    txt = $("msg");
    msg = txt.value;
    if (!msg) {
        alert("Message can not be empty");
        return;
    }
    txt.value = "";
    txt.focus();
    try {
        socket.send(msg);
        log('Sent: ' + msg);
    } catch (ex) {
        log(ex);
    }
}

function quit() {
    log("Goodbye!");
    socket.close();
    socket = null;
} // Utilities  function $(id){ return document.getElementById(id); }  function log(msg){ $("log").innerHTML+="<br>"+msg; }  function onkey(event){ if(event.keyCode==13){ send(); } }

4 个答案:

答案 0 :(得分:4)

第一个函数调用第三个函数。第三个函数调用第二个函数。他们之间没有其他关系。

$字符在变量名中没有特殊含义。您可以改用foogetEl

$只是一个特别难以理解的名称,它已成为获取元素的函数的流行,因为它是(a)短而(b)是在其他一些语言中用来表示变量开头的字符。

答案 1 :(得分:2)

它声明了一个名为$的函数,它接受一个id-string并返回

documet.getEelementById(id);

简单。

答案 2 :(得分:1)

第一个函数是一个事件处理程序。只要对象socket触发open事件,JavaScript就会调用socket.onopen中定义的函数。此函数将调用下面定义的另一个名为log的函数。

第二个函数为document.getElementById()创建简写。由于$字符可以用作JavaScript中的常规标识符,因此它可以成为缩短常用功能的便捷工具。需要注意的是,几个常见的js库将这个符号用于关键函数,因此您可能应该在自定义代码中避免这种情况。

log函数使用简写选择要通过连接接收消息文本的元素。无论文本是什么,都会添加消息文本。

答案 3 :(得分:0)

改写为:

// Binds an anonymous function to the open event of the 
// object named socket. The handler function prints a
// status message in the log panel by invoking the 
// function defined below named log.

socket.onopen = function () {
    log("Welcome - status " + this.readyState); 
};

// Function named $ that returns the DOM element
// whose id attribute equals id.

function $(id) { 
    return document.getElementById(id); 
}

// Function named log that invokes the function named $.
//
// This function finds the DOM element whose id equals
// "log" and appends a line break and a message to its
// inner content.

function log(msg) { 
    $("log").innerHTML += "<br>" + msg; 
}