for语句用于枚举对象(成员)的
属性,如下所示
复制代码代码如下所示:
var obj = {姓名:杰克),
getName(){ return这个:
函数名称}。
};
/ /输出名称,getName
对于(VAR ATR obj){
警报(ATR);
}
你有没有注意到有没有价值,和其他对象toString,内置属性(也称为内置的成员,隐藏属性和预定义的属性),在用于枚举成员的
显示(自定义成员)的对象。
如果你重写内置的特性,然后重写对象的ToString
复制代码代码如下所示:
var obj = {姓名:杰克
getName(){ return这个:函数名称},
说明:函数(){返回我是杰克。}
}
对于(VAR ATR obj){
警报(ATR);
}
输出将是什么
1、IE6 / 7 / 8,如不重写ToString,仍然只有输出名称,getName
2、IE9 / / /歌剧
浏览器Firefox或Safari,然后输出名称,getName,toString
如果将属性
方法添加到内置原型中,则也可以遍历
复制代码代码如下所示:
object.prototype.clone =函数(){ }
var obj = { {
名称:杰克,
年龄:33
}
名称、年龄、克隆
(N为var obj){
警报(N)
}
克隆的方法添加到object.prototype,和所有的浏览器在显示克隆。
这可能是不多的,因为它一般不建议延长内置的构造函数的原型,这是一种prototype.js.jquery下降的
原因,强调不延伸自我的原型,在jQuery对象前的作品,后者在强调所有的方法。
但有时,为了与ES5或后续版本兼容,我们将扩大对ES5内置生成器原型(IE6浏览器 / 7 / 8)。对于在不同的browsers.as不同如下
复制代码代码如下所示:
如果(!函数.原型.绑定){
function.prototype.bind =
功能(范围){
这个=
返回函数(){
Fn.apply(范围、
参数)
}
}
}
函数问候(名称){
警报(this.greet +、+姓名)
}
对于(在问候中的var){
警报(N)
}
IE6 / 7 / 8输出绑定,并没有其他的浏览器。因为绑定是现代浏览器的
原生支持,为不可用,而IE6 / 7 / 8添加绑定到function.prototype。
总结:在跨浏览器的设计中,我们不能指望在获取对象的成员的名称,一般是以hasownproperty。