1 .出现的bug,如果这个key的值是false,这里就会判断没有,或者value是undefined也一样
2 .可以看到这俩都不行
3 .如果对象上不存在改属性,则会返回undefined.这种方式可以判断对象的自由属性和继承属性.如果对象自身没有检测的属性,而原型链上有该属性,就会返回原型链上的属性值
1 .返回一个布尔值,指示对象自身属性是否有指定的属性
2 .原型链上的不会被访问到,和in不同,会忽略到从原型链上继承到的属性
3 .即使属性的值是null,undefined,只要属性存在,hasOwnProperty依旧会返回true
4 .注意:这个方法没有被保护,也就是说方法可以自定定义一个这样的方法,来让他的返回值永远是true或者false
1 .!!('work' in obj)
2 .如果指定的属性在指定的对象或其原型链中,则in 运算符返回true
3 .使用delete删除的属性返回false
4 .值为undefined的属性是可以的
1 .和in方法完全一样,但是第一个参数不是对象会报错
2 .这个方法更加形象
3 .原型链上的方法同样可以会返回true
1 .判断指定名称的属性是否为实例属性并且是可枚举的.
2 .
1 .也就是说,判断自身属性的时候用除了in的所有方法,判断继承属性使用in
2 .
localStorage提供了几个方法:
如果 key 存在时,更新 value
如果 key 不存在返回 null
一旦删除, key 对应的数据将会全部删除
某些时候使用 removeItem 逐个删除太麻烦,可以使用 clear ,执行的后果是会清除所有 localStorage 对象保存的数据
.length 数据总量,例: localStorage.length
.key(index) 获取 key ,例: var key=localStorage.key(index)
JSON.stringify(data) 将一个对象转换成JSON格式的数据串,返回转换后的串
JSON.parse(data) 将数据解析成对象,返回解析后的对象
1、将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率。2、异步上传文件
1、创建一个空对象:
2、通过表单对formData进行初始化
创建表单:
通过表单元素作为参数,实现对formData的初始化:
1、通过get(key)与getAll(key)来获取相对应的值
2、通过append(key,value)在数据末尾追加数据
3、通过set(key, value)来设置修改数据
key的值不存在,会添加一条数据
key的值存在,会修改对应的value值
4、通过has(key)来判断是否存在对应的key值
5、通过delete(key)可以删除数据
创建表单:
发送数据: