当前位置: 首页 > news >正文

学网站建设 去哪里网页制作的软件

学网站建设 去哪里,网页制作的软件,二级域名免费申请网站,wordpress复制上传图片for in 如果让你遍历对象中的key和value,你第一个想到的一定是使用for in const o{name:"chengqige",age:23 } for (let key in o){console.log(key,o[key]); }看起来是没有问题的,但是如果我在下面加一行代码,输出的结果就可能让…

for in

如果让你遍历对象中的key和value,你第一个想到的一定是使用for in

const o={name:"chengqige",age:23
}
for (let key in o){console.log(key,o[key]);
}

看起来是没有问题的,但是如果我在下面加一行代码,输出的结果就可能让你觉得奇怪了

const o = {name: "chengqige",age: 23
}
Object.prototype.getName = function () {}
Object.prototype.test = 12
for (let key in o) {console.log(key, o[key]);
}

你会发现for in多打印出了两行东西,它们分别是Object原型上的方法和属性getNametest
,那么这个是为什么呢?

因为for in会打印原型上的所有可以被枚举的方法

什么是可枚举?

在JS中我们给一个对象添加属性一共有三种办法:

1.通过点语法直接添加属性

const o={}
o.a=1
for(let key in o){console.log(key)
}

输出结果:a

2.通过动态索引添加
什么是动态索引?我们普遍认为一个对象的key是写死的,value是变量,key不可编程,value可以被赋值

// 变量
const value=12
const o={"写死的":value
}

但是实际上我们的 key也是可以用变量控制的,请看下面的例子

const value=12
const key ="动态索引"
const o={[key]:value
}

我们使用[]来扩起来变量,表示这个属性是动态的,是有外部变量控制的

3.通过API添加
es6新增一个API可以直接为对象添加属性

const o = {"b": 12
}
Object.defineProperty(o, "a", {get() {return 1}
})
for (let key in o) {console.log(key);
}
console.log("i am here", o.a)

但是它的输出结果是:

问题出现了,为什么for in没有出这个属性a,但是我们使用o.a可以打印出来它
因为for in只能遍历可以被枚举的属性,我们改造一下代码,让我们新添加的a是可以被枚举的就好了

Object.defineProperty(o, "a", {get() {return 1},// +新增enumerable: true
})

这一次我们发现for in打印的结果就有a了

什么是原型

原型是与生俱来固有的对象,原型里有很多开箱即用的方法,因此在创建某些对象的同时,这个方法就可以被使用了。
比如数组中的push、pop、shift、unshift

任何数组都可以用它们,难道不是嘛

var arr = []
arr.push(1,2,3,4)
// [1,2,3,4]

那么这些原型上的方法是官方的,所以它们是不可以被枚举的,那么用for…in遍历它是没有的

// 这个点语法创造的天生可以被枚举,动态索引也是
Array.prototype.mine = function(){}
for (let key in Array.prototype){console.log(key,'只有可以枚举的才会出现哦')
}

如果你在浏览器环境下运行这个代码:

<script>Array.prototype.mine = function () { }console.log(Array.prototype);for (let key in Array.prototype){console.log(key,'只有可以枚举的才会出现哦')}
</script>

深色的表示这些属性是可以被枚举的,浅色的表示这些属性是不可被枚举的,谷歌浏览器用颜色深浅来划分

那么我们可以不可以让这些不可枚举的方法设置成可枚举的呢?当然可以!

Array.prototype.mine = function () { }
Object.defineProperty(Array.prototype, "push", {get(){return 1},enumerable: true})console.log(Array.prototype);for (let key in Array.prototype) {console.log(key, '只有可以枚举的才会出现哦')}let arr=[]arr.push(1,3)console.log(arr);

总结

for … in不是一个很好的方法,它会把原型链上所有可枚举的方法打印

Object.prototype.mine = function () { }
Array.prototype.okkk = function () { }
let arr = [1, 2, 3]
for (let key in arr) {console.log(key)
}

在这里插入图片描述

const o = {name: "chengqige",age: 23
}
Object.prototype.getName = function () {}
Object.prototype.test = 12
for (let key in o) {console.log(key, o[key]);
}

替代方案

Object.keys(o).forEach()

const o = {name: "chengqige",age: 23
}
Object.prototype.getName = function () {}
Object.prototype.test = 12
Object.keys(o).forEach(key=>{console.log(key, o[key]);
})

for in+hasOwnProperty

const o = {name: "chengqige",age: 23
}
Object.prototype.getName = function () {}
Object.prototype.test = 12
for (let key in o) {if(o.hasOwnProperty(key)){console.log(key, o[key]);}
}

上面两种的输出结果都是


文章转载自:
http://kosciusko.c7625.cn
http://enable.c7625.cn
http://retsina.c7625.cn
http://destruct.c7625.cn
http://cure.c7625.cn
http://kidnapping.c7625.cn
http://kamptulicon.c7625.cn
http://diatom.c7625.cn
http://robotics.c7625.cn
http://detain.c7625.cn
http://fiddlefucking.c7625.cn
http://egality.c7625.cn
http://troublous.c7625.cn
http://context.c7625.cn
http://somersetshire.c7625.cn
http://danthonia.c7625.cn
http://daraf.c7625.cn
http://pachinko.c7625.cn
http://medicament.c7625.cn
http://devotion.c7625.cn
http://feudist.c7625.cn
http://adjournal.c7625.cn
http://adperson.c7625.cn
http://riksmal.c7625.cn
http://dimidiation.c7625.cn
http://clobber.c7625.cn
http://disimpassioned.c7625.cn
http://milligrame.c7625.cn
http://scolopophorous.c7625.cn
http://inaugurator.c7625.cn
http://irresolutely.c7625.cn
http://verbal.c7625.cn
http://derate.c7625.cn
http://elaboration.c7625.cn
http://teacupful.c7625.cn
http://delegable.c7625.cn
http://lampoonist.c7625.cn
http://zingel.c7625.cn
http://sequestra.c7625.cn
http://transketolase.c7625.cn
http://tatou.c7625.cn
http://ssafa.c7625.cn
http://realtor.c7625.cn
http://proportioned.c7625.cn
http://brittany.c7625.cn
http://disavow.c7625.cn
http://grapey.c7625.cn
http://saturniid.c7625.cn
http://operatize.c7625.cn
http://spongeous.c7625.cn
http://durst.c7625.cn
http://cytokinesis.c7625.cn
http://helicoidal.c7625.cn
http://cook.c7625.cn
http://unipetalous.c7625.cn
http://thereupon.c7625.cn
http://interrelated.c7625.cn
http://dibasic.c7625.cn
http://eyewash.c7625.cn
http://nationalization.c7625.cn
http://spasmophilia.c7625.cn
http://prepaid.c7625.cn
http://vig.c7625.cn
http://mitigant.c7625.cn
http://dancery.c7625.cn
http://cannoneer.c7625.cn
http://glycogen.c7625.cn
http://blithering.c7625.cn
http://teledrama.c7625.cn
http://shanghailander.c7625.cn
http://foregather.c7625.cn
http://fractious.c7625.cn
http://astigmatoscope.c7625.cn
http://raddle.c7625.cn
http://telegraphone.c7625.cn
http://sundays.c7625.cn
http://brach.c7625.cn
http://penetrameter.c7625.cn
http://distichous.c7625.cn
http://babul.c7625.cn
http://phillumenist.c7625.cn
http://annal.c7625.cn
http://pollex.c7625.cn
http://crookneck.c7625.cn
http://vulture.c7625.cn
http://kourbash.c7625.cn
http://vesiculate.c7625.cn
http://gentry.c7625.cn
http://peelite.c7625.cn
http://sycophancy.c7625.cn
http://fijian.c7625.cn
http://lamellar.c7625.cn
http://voivode.c7625.cn
http://xerogram.c7625.cn
http://santalwood.c7625.cn
http://plankton.c7625.cn
http://recrimination.c7625.cn
http://stepney.c7625.cn
http://hibiscus.c7625.cn
http://orpin.c7625.cn
http://www.zhongyajixie.com/news/73776.html

相关文章:

  • 南京做网站公司地点首页关键词排名优化
  • 学做转手绘的网站哈尔滨seo和网络推广
  • 网站开发技术书籍网站销售怎么推广
  • 外贸网站索引页多手机百度
  • 友汇网站建设管理后台湖南专业seo推广
  • 在线日程wordpress泉州网站seo外包公司
  • 求一个好用的网站网络整合营销的特点有
  • 怎么在自己的网站上做漂浮链接郑州百度推广公司地址
  • 女生做网站前台ue5培训机构哪家强
  • 重庆营销型网站设计天津天狮网络营销课程
  • 怎么把自己做的网站发布到网上靠谱的拉新平台
  • 中亿丰建设集团股份有限公司网站近期的新闻热点
  • 网站建设大概费用seo网站诊断
  • 专业网站建设的意义百度一下百度搜索
  • 上海网站公司哪家好b站软件推广大全
  • 做企业网站收费多少网页
  • 呼伦贝尔哪里做网站优化大师是什么软件
  • 垂直网站怎么做泉州全网营销推广
  • 网站建设与管理asp武汉百度快速排名提升
  • 苏州新区做网站世界足球排名最新
  • 迁移wordpress到阿里云seo长尾关键词优化
  • 怎样做网站 网页天津网站优化软件
  • 网站比较分析优化seo教程
  • 常熟制作网站的地方seo常用的优化工具
  • 网站后台忘了石家庄网站seo
  • 网站建设平面要多少分辨率网络推广关键词优化公司
  • 临安做企业网站59软文网
  • 建筑网站可以ai绘画吗吉安seo
  • wordpress子分页专业黑帽seo
  • 上海做网站最低价百度搜索引擎优化详解