为什么一个句点用于调用“toString()”在数字JavaScript上

时间:2017-02-27 00:53:55

标签: javascript

为什么在数字上调用toString时,它不像典型函数那样被调用。我希望var num = 5; toString(num);,但它会像var num = 5; num.toString();那样完成。为什么一个句点用于在数字上调用函数而不是将数字作为参数提供?我知道句点用于引用对象的属性,但我看不出它是如何适用于这种情况的。很抱歉,如果这是一个简单的问题,但我是编程新手,我真的想在继续之前理解这门语言。

3 个答案:

答案 0 :(得分:0)

它上面的

toString()实际上是window.toString()Object.prototype.toString

它不需要任何论据。



console.info(toString === window.toString)
console.info(window.toString())




您可能认为全球,内置函数实际上是window instance的方法。

答案 1 :(得分:0)

在JavaScript中,.用于访问对象的属性。在这种情况下,Number上有一个属性toString,它是一个可以调用的函数。

var num = 5;
num.toString //function toString() { [native code] }
num.toString() //"5"

toString对象之前没有任何内容的函数window实际上是window.toString //function toString() { [native code] } 对象的属性,并且等效于以下内容:

private void makeArrayRequest(String setSwitch)
{
    try {
        Map<String, String> params = new HashMap();
        params.put("func", setSwitch);
        JSONArray parameters = new JSONArray(params);

        DisplayToast("Sending: " + setSwitch);
        JsonArrayRequest jsonRequest = new JsonArrayRequest(
                Request.Method.POST, url, parameters,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        DisplayText("Response: " + response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        //error.printStackTrace();
                        DisplayText("Error:"+error.getMessage());
                    }
                }
        );
        Volley.newRequestQueue(this).add(jsonRequest);
    } catch(JSONException e) {
        // this ends up getting thrown because of the HASH input
        DisplayText("ArrErr:"+e.getMessage());
    }
}

private void makeObjectRequest(String setSwitch)
{
    DisplayToast("Sending: " + setSwitch);


    Map<String, String> params = new HashMap();
    params.put("func", setSwitch);

    JSONObject parameters = new JSONObject(params);

    JsonObjectRequest jsonRequest = new JsonObjectRequest(
            Request.Method.POST, url, parameters,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    DisplayText("Response: " + response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //this ends up getting thrown because of JSONArray response?
                    DisplayText("Error:"+error.getMessage());
                }
            }
    );

    Volley.newRequestQueue(this).add(jsonRequest);
}

答案 2 :(得分:0)

数字的原型定义为https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

如果直接使用toString,这意味着您要求全局范围使用全局toString(window.toString())。该窗口非常通用,知道如何将特定数字转换为String。