为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript反射机制到底是什么?

JavaScript反射机制到底是什么?

慕妹3146593 2019-04-21 20:22:17
JavaScript的反射机制,根据百度的结果,JavaScript反射结果不太一样,究竟怎么样算是反射呢?有人说,动态语言(php,javascript)这类语言无所谓反射不反射。有实例最好了,谢谢大家
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

不要为了为了反射而反射。
题主可能是为了反射而反射。(js的反射随处可见,而且你自己可能经常用)
反射的概念比较强的语言像java和go。因为他们都是静态语言。缺乏很多动态特性。他们是只有通过一大堆api才能反射。所以才会有比较强反射的概念。
js是一个基于原型继承的面向对象的函数语言。反射无处不在。(当一个概念无处不在的时候,那么设个概念也就渐渐地淡化了。)
js反射说个最简单的例子。
在你不知道一个对象内部结构的情况下(你甚至连这个对象的一个属性,或api都不知道),怎么跟他通信呢?这个时候就要通过一种机制,得到它的内部结构。这种机制就叫做反射。说白了,窥探对象内部结构的方法就叫做反射。
例子1:
for(varpropinwindow){
console.log(prop);
}
//Object.keys(window).forEach(console.log);一样的结果
可能你会问?这比较时遍历window对象啊?有什么稀奇的。你仔细看看这就是在窥探window对象的内部结构;换句话说这就是反射。(window的方法和属性都基本都会被打印出来,除了一些情况enumerable:true的时候)。
得到了内部结构就需要调用,也就是通信。
window['resizeTo'](100,200)是的就是这么简单。这么贱的的原因是应为js是函数编程语言,函数在js重视一等功名。函数可以当变量或对象使用。
//(window['resizeTo']).apply(window,[100,200])以上面效果等同。
js是一个表现能力很强的语言,也就是说代码会很好读。而写可以用少的代码做多的事。这些年google在v8上花费很多精力,性能也越来越强。但是js也有很多毛病。这里就不说了。
                            
查看完整回答
反对 回复 2019-04-21
?
LEATH

TA贡献1936条经验 获得超7个赞

JavaScript哪有什么反射……换个说法……JavaScript什么地方都是反射。window['alert']()这放到JAVA/C#那类语言中妥妥的都是反射……
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 347 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号