java的反射机制到底有什么用_JavaScript反射机制到底是什么?

不要为了为了反射而反射。

题主可能是为了反射而反射。(js的反射随处可见,而且你自己可能经常用)

反射的概念比较强的语言像java和go。因为他们都是静态语言。缺乏很多动态特性。他们是只有通过一大堆api才能反射。所以才会有比较强反射的概念。

js是一个基于原型继承的面向对象的函数语言。反射无处不在。(当一个概念无处不在的时候,那么设个概念也就渐渐地淡化了。)

js反射说个最简单的例子。

在你不知道一个对象内部结构的情况下(你甚至连这个对象的一个属性,或api都不知道),怎么跟他通信呢?这个时候就要通过一种机制,得到它的内部结构。这种机制就叫做反射。说白了,窥探对象内部结构的方法就叫做反射。

例子1:

for (var prop in window) {

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也有很多毛病。这里就不说了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值