2、JS面向对象之属性

  1. 属性的删除 (delete o.name
  2. 属性的检测 (in 和 hasOwnProperty 'name' in oo.hasOwnProperty('name')
  3. 枚举属性 (for in多用于对象,for &each多用于数组)
  4. 序列化对象
//属性的设置和获取 ./[] (区别: .是取自身的属性,[]可以是变量)
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')
        }        
    }

})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值