({}).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(也就是数组)。