猿问

JS中的toString问题。

如何理解({}).toString.apply([]);这句代码?

例如:var arr = [1,2,3];

            ({}).toString.apply(arr);//返回 function Array() { [native code] };

这个前缀({})是什么含义?还有为什么调用apply或者call可以的到这个结果?

PS:为啥我吧({})改为window得出的结果也是一样的?

思绪有点混乱Ing......

KokoTa
浏览 1847回答 2
2回答

木子舟义

{} 是一个空对象。  等价于 var object = new Object();    {} = object  什么值都没给<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Document</title></head><body>    <script>        var arr = [1,2,3];        var x = 123;        var o = {            x : 1,            y : 'hehe',            toString:function()            {                return this;            }        };        console.log(o.toString.apply(x));    </script></body></html>console.log(o.toString.apply(x));在o上调用toString但是指针指向的this 是 x (也就是NUMBER类型的toString) 返回NUMBER类型。你的问题  ({}).toString.apply(arr);  在空对象上去调用toString。但是这个toString里的this 指向的是arr(也就是数组)。

李晓健

这个只是为了改变数组的toString方法呀。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答