JS中的缺陷分析

JS中的缺陷分析
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。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部