不要為了為了反射而反射。題主可能是為了反射而反射。(js的反射隨處可見,而且你自己可能經(jīng)常用)反射的概念比較強的語言像java和go。因為他們都是靜態(tài)語言。缺乏很多動態(tài)特性。他們是只有通過一大堆api才能反射。所以才會有比較強反射的概念。js是一個基于原型繼承的面向?qū)ο蟮暮瘮?shù)語言。反射無處不在。(當一個概念無處不在的時候,那么設(shè)個概念也就漸漸地淡化了。)js反射說個最簡單的例子。在你不知道一個對象內(nèi)部結(jié)構(gòu)的情況下(你甚至連這個對象的一個屬性,或api都不知道),怎么跟他通信呢?這個時候就要通過一種機制,得到它的內(nèi)部結(jié)構(gòu)。這種機制就叫做反射。說白了,窺探對象內(nèi)部結(jié)構(gòu)的方法就叫做反射。例子1:for(varpropinwindow){console.log(prop);}//Object.keys(window).forEach(console.log);一樣的結(jié)果可能你會問?這比較時遍歷window對象啊?有什么稀奇的。你仔細看看這就是在窺探window對象的內(nèi)部結(jié)構(gòu);換句話說這就是反射。(window的方法和屬性都基本都會被打印出來,除了一些情況enumerable:true的時候)。得到了內(nèi)部結(jié)構(gòu)就需要調(diào)用,也就是通信。window['resizeTo'](100,200)是的就是這么簡單。這么賤的的原因是應(yīng)為js是函數(shù)編程語言,函數(shù)在js重視一等功名。函數(shù)可以當變量或?qū)ο笫褂谩?pre>//(window['resizeTo']).apply(window,[100,200])以上面效果等同。js是一個表現(xiàn)能力很強的語言,也就是說代碼會很好讀。而寫可以用少的代碼做多的事。這些年google在v8上花費很多精力,性能也越來越強。但是js也有很多毛病。這里就不說了。