Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Object.prototype.valueOf在IE9-

  valueOf有很多,在Number、String、Boolean,这些基础类型构造器中都有独自的定义,但是这些基本类型构造器上的valueOf不是通用方法。唯一可以通用的valueOf就是定义在Object原型上的valueOf。但是在IE9-上,这个通用的valueOf有点奇葩。
  valueOf的概念就是把对象的值取出来,对于基本类型对象来说这很容易理解,但是Object本身是个对象,它的值应该是什么?从那些基本类型实现的尿性来看,它应该返回一个对象,ECMA262中也是这么定义的。虽然ED3和ED5中的描述不同,但基本概念依然没跑。
  在ED5中,它的返回定义为把this作为ToObject的参数调用,很明显是打算要返回一个Object。而ED3中把这个方法定义为返回this,那this到底是什么?即使是字符串,他的this也是一个对象。
<script>
String.prototype.abc=function(){
  alert(this instanceof Object); //true
};
"".abc();
</script>
  所以无论是ED5还是ED3,valueOf的正确行为都应该返回一个对象。但是IE9-中此处存在BUG。
<script>
alert(typeof Object.prototype.valueOf.call("abc"));
//规范:object
//IE9-:string
</script>
  总之,IE9给我们带来的只有一些HTML5和CSS3的基本兼容,它也存在很多问题。虽然刚出来的时候确实很好用,但是对于日新月异的Web来说再好用的东西也会很快被淘汰。人们缺的不是先进的浏览器,而是升级意识。
网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^