如果函数的toString()以“bound:”开头,这意味着什么?

时间:2012-05-01 08:09:44

标签: javascript

在chrome开发人员控制台中,键入$x.toString()$x是开发工具控制台的内置函数之一)。输出如下:

"bound: function (xpath, context)
    {
        var doc = (context && context.ownerDocument) || inspectedWindow.document;
        var result = doc.evaluate(xpath, context || doc, null, XPathResult.ANY_TYPE, null);
        switch (result.resultType) {
        case XPathResult.NUMBER_TYPE:
            return result.numberValue;
        case XPathResult.STRING_TYPE:
            return result.stringValue;
        case XPathResult.BOOLEAN_TYPE:
            return result.booleanValue;
        default:
            var nodes = [];
            var node;
            while (node = result.iterateNext())
                nodes.push(node);
            return nodes;
        }
    }"

第一行中“bound:”的含义是什么?

1 个答案:

答案 0 :(得分:4)

$x是webkit开发人员工具控制台中的内置函数,如$$$等。 CommandLineAPI(用于控制台脚本评估)会覆盖所有控制台方法的toString函数,以包含"bound: "前缀:

function bind(thisObject, memberFunction)
{
    var func = memberFunction;
    var args = Array.prototype.slice.call(arguments, 2);
    function bound()
    {
        return func.apply(thisObject, args.concat(Array.prototype.slice.call(arguments, 0)));
    }
    bound.toString = function() {
        return "bound: " + func;
    };
    return bound;
}

可以找到以这种方式包装的控制台功能的完整列表here