javascript for in语句浏览器兼容问题简单介绍

快乐打工仔 分类:实例代码

关于for in语句的基本用法这里就不多介绍了,具体可以参阅javascript for in语句一章节。

下面首先看一段代码实例:

var obj={
  url:"pipipi.net",
  webName:"犀牛前端部落",
  address:"青岛市南区"
}
for(var prop in obj){
  console.log(prop+":"+obj[prop])
}

上面的代码可以遍历对象的自定义属性,但是它并没有能够遍历对象的内置属性或者方法,比如toStirng()和valueOf()方法并没有被遍历到。那么如果重写这些方法以后会是怎么结果呢,代码实例如下:

var obj={
  url:"pipipi.net",
  webName:"犀牛前端部落",
  address:"青岛市南区",
  toString:function(){return "犀牛前端部落欢迎您"}
}
for(var prop in obj){
  console.log(prop+":"+obj[prop])
}

上面的代码中,浏览器兼容性就出来了,结论如下:

(1).IE9以下浏览器不会输出toString()方法。

(2).标准浏览器能够输出toString()方法。

再介绍一个和浏览器兼容无关的:

for in语句也可以遍历原型链上的自定义属性,代码如下:

Object.prototype.clone=function(){return "犀牛前端部落欢迎您"}
var obj={
  url:"pipipi.net",
  webName:"犀牛前端部落",
  address:"青岛市南区",
}
for(var prop in obj){
  console.log(prop+":"+obj[prop])
}

回复

我来回复
  • 暂无回复内容