var p in (toString:null) 什么意思

qq_31754765 2015-10-04 11:26:25
for ( var p in (toString:null) ){
函数体
}

其中 var p in (toString:null) 有什么作用啊?
谢谢各位大神了
...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jafck 2018-06-21
  • 打赏
  • 举报
回复
for ( var p in (toString:null) ){
函数体
}
应写成
for ( var p in {toString:null} ){
函数体
}
下面这段函数(摘自javascript 权威指南 p182页)中,o为要修补的目中程序代码中的某一对象,source为 修复的来源
var p in {toString:null} 用来检测IE bug, 这个bug意义:null是特殊对象,但它不可以进行toString操作,因为toString是Object类的方法。根据for/in循环枚举属性的机制,如果在o的属性链中找到一个不可枚举的同名属性名,则则会屏蔽后面同名的可枚举属性。

————————————————————————
//特定场景下返回带补丁的extend()版本
//定义一个扩展函数,用来将第二个以及后续参数复制至第一个参数
//如果o的属性拥有一个不可枚举的同名属性,则for/in循环不会枚举对象o的可枚举属性,也就是说,将不会正确地处理诸如toString的属性,除非我们显式检测它
var extend = (function(){ //将这个函数的返回值赋值给extend
//在修复它之前,首先检查是否存在IE bug
for( var p in {toString:null} ){
//如果代码执行到这里,那么for/in循环会正确工作并返回
//一个简单版本的extend()函数
return function extend(o){
for(var i=1;i<arguments.length;i++){
var source = arguments[i];
for( var prop in source ) o[prop] =source[prop];
}
jafck 2018-06-21
  • 打赏
  • 举报
回复
for ( var p in (toString:null) ){
函数体
}
应写成
for ( var p in {toString:null} ){
函数体
}
下面这段函数(摘自javascript 权威指南 p182页)中,o为要修补的目中程序代码中的某一对象,source为 修复的来源
var p in {toString:null} 用来检测IE bug, 这个bug意义:null是特殊对象,但它不可以进行toString操作,因为toString是Object类的方法。根据for/in循环枚举属性的机制,如果在o的属性链中找到一个不可枚举的同名属性名,则则会屏蔽后面同名的可枚举属性。

————————————————————————
      //特定场景下返回带补丁的extend()版本
//定义一个扩展函数,用来将第二个以及后续参数复制至第一个参数
//如果o的属性拥有一个不可枚举的同名属性,则for/in循环不会枚举对象o的可枚举属性,也就是说,将不会正确地处理诸如toString的属性,除非我们显式检测它
var extend = (function(){ //将这个函数的返回值赋值给extend
//在修复它之前,首先检查是否存在IE bug
for( var p in {toString:null} ){
//如果代码执行到这里,那么for/in循环会正确工作并返回
//一个简单版本的extend()函数
return function extend(o){
for(var i=1;i<arguments.length;i++){
var source = arguments[i];
for( var prop in source ) o[prop] =source[prop];
}
孟子E章 2015-10-04
  • 打赏
  • 举报
回复
第一次见这么写的,你能把代码贴全吗?研究一下
天际的海浪 2015-10-04
  • 打赏
  • 举报
回复
应该是这样的吧。

for ( var p in {toString:null,abc:null} ){
	alert(p);
}

87,885

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧