- 属性的删除 (
delete o.name
) - 属性的检测 (in 和 hasOwnProperty
'name' in o
,o.hasOwnProperty('name')
) - 枚举属性 (for in多用于对象,for &each多用于数组)
- 序列化对象
//属性的设置和获取 ./[] (区别: .是取自身的属性,[]可以是变量)
var obj = {}
obj.name = 'Tina'
obj['age'] = '26'
//打印
console.log(obj.name) //Tina
console.log(obj['name']) //Tina
console.log(obj.age) //26
console.log(obj['age'])//26
// 访问一个变量
var nameA = 'name'
console.log(obj[nameA]) //相当于 console.log(obj['name']), 打印出 Tina
1、属性的删除
// 属性的删除
var o= {}
o.name = 'Tina'
o['age'] = '26'
//写法1
delete o.name
console.log(o.name) //underfined
//写法2
delete o['name']
console.log(o['name']) //underfined
2、属性的检测
//属性的检测
var o = {}
o.name = 'Tina'
o.age = 'underfined'
//方法1 in运算符
console.log('name' in o) // true
//方法2 hasOwnProperty()
console.log(o.hasOwnProperty('name')) //true
//方法3 != underfined 对值进行比较(不推荐使用,比如age)
console.log(o.name != 'underfined') //true
/*
补充
= 赋值
== 匹配判断
=== 匹配判断,对类型进行判断
*/
3、枚举属性(for in多用于对象,for &each多用于数组)
// for in
//对象
var o = {x:1,y:2,z:3}
for(a in o){console.log(a)} // 打印出key: x y z
for(a in o){console.log(o[a])} //打印出value: 1 2 3
//数组
var arr = [{x:1},{y:2},{z:3}]
for(a in arr){console.log(a)} // 打印出索引: 0 1 2
for(a in arr){console.log(arr[a])} //打印出对象key: value
//同步
for(var i = 0; i<10; i++) {
console.log(i) //打印出索引0~9
}
//异步
var data = msg; //假设已取到后台返回的值
$.each(data, function(indedx, item) {
alert(data)
})
alert(data)//如果此alert先出现就改用for
})
4、序列化对象
//序列化对象
var o = {x:1,y:2,z:3}
var str = JSON.stringify(o) //转换为字符串{"x":1,"y":2,"z":3}
console.log(typeof(str)) //string
var obj = JSON.parse(str)) //{x: 1, y: 2, z: 3}
console.log(typeof(obj)) //object
//深拷贝(双胞胎)浅拷贝(影子)
JSON.parse();//深拷贝 //原型继承也属于深拷贝
/*浅拷贝*/
var o2 = {x:1,y:2,z:3}
var p = o2
o2.x = '111'
console.log(p) // {x:111,y:2,z:3}
console.log(o2) // {x:111,y:2,z:3}
/*---------------*/
function getFormData() {
var _name = 'Tina'
var _age = '26'
var data = {
"name":_name,
"age":_age }
return data
}
//提交
$('.btn-submit').on('click',function () {
var data = getFormData()
console.log(JSON.stringify(data)) //{"name":"Tina","age":"26"}
$.ajax({
type: 'POST',
url: url,
cache: false,
data: {dataJson:JSON.stringify(data)}, //传参
dataType: 'json', //返回值类型
success:function(msg){
//
},
error:function(){
//
}
})
})
函数 | 描述 |
---|---|
JSON.parse() | 用于将一个 JSON 字符串转换为 JavaScript 对象。 |
JSON.stringify() | 用于将 JavaScript 值转换为 JSON 字符串。 |
PS : json字符串转换参考
扩展:枚举案例
arr = [{z:1,q:2,c:3},{a:1,q:2,w:3},{a:1,q:2,w:3}] 数组对象有z返回ok反之返回error
var arr = [{z:1,q:2,c:3},{a:1,q:2,w:3},{a:1,q:2,w:3}]
for(var i=0; i<arr.length; i++) {
if(arr[i].hasOwnProperty('z')){
console.log('ok')
break
}else {
console.log('error')
}
}
$.each(arr,function(index, item) {
//1
if(item.hasOwnProperty('z')){
console.log('ok')
}else{
console.log('error')
}
//2
if(item.z != undefined){
console.log('has z')
}
//3 不推荐,影响性能
for(i in item) {
if(i=='z'){
console.log('has z')
}
}
})