JS对象,对象序列化,对象属性遍历,对象属性删除

本文介绍了JavaScript中对象属性的删除、遍历以及字符串转化的相关知识。通过示例展示了如何使用delete操作符删除对象属性,如何遍历对象并移除空属性,以及如何进行对象与字符串之间的转化。还讨论了JS函数中的累加、变量作用域和回调函数的应用。
摘要由CSDN通过智能技术生成

对象属性删除

var obj = {
    name:'zhangsan',
    age:12,
    test: 123
};
var test = 'age';
// obj.age
// obj.[test]
//[]访问属性,内可放变量
console.log(obj[test]);//12
console.log(obj['test']);//123
console.log(obj);
//删除test属性
delete obj.test;
console.log(obj);

命名了一个test的变量并赋予了age的值,所以第一个打印的结果为12。
第二个打印的是obj中test的值为123,在[]中加‘’为属性名。
第三个打印obj变量中的值为

{ name: ‘zhangsan’, age: 12, test: 123 }

第四个打印出

{ name: ‘zhangsan’, age: 12 }

是因为delete删除了obj中test的属性。

对象属性遍历

var obj2 = {
    username:'lisi',
    password:'123',
    gender:'',
    age:'',
    hobby:'',
    info:'我是一个XXX的人',
    sno:1001
}
//遍历对象,获取属性值,如果属性值为空,删除属性
console.log(obj2);
for(var key in obj2){
    //key-属性名
    // console.log(key,obj2[key])
    if(!obj2[key]){
        delete obj2[key];
    }
}
console.log(obj2);

第一个打印出

{ username: ‘lisi’,
password: ‘123’,
gender: ‘’, age: ‘’,
hobby: ‘’,
info: ‘我是一个XXX的人’,
sno: 1001 }

是遍历对象中的属性
第二个打印出{ username: ‘lisi’, password: ‘123’, info: ‘我是一个XXX的人’, sno: 1001 }是因为删除了obj2中属性值为空的属性。
pS:注释掉的打印出来的是一个数组。

字符串的转化

var obj = {
    name:'zhangsan',
    age:12
}
console.log(obj);
console.log(obj.toString());
console.log(JSON.stringify(obj));
var jsonStr = '{"name":"zhangsan","age":12}';
console.log(JSON.parse(jsonStr));

第一个打印出如下结果是因为遍历obj中的属性。

{ name: ‘zhangsan’, age: 12 }

第二个打印出如下结果是因为toString将一个对象转化成字符串

[object Object]

第三个打印出如下结果是因为stringify把js字符串转化成JSON字符串,且JSON中字符串形式的都带引号

{“name”:“zhangsan”,“age”:12}

第四个打印出如下结果是因为parse将JSON字符串转化成JS字符串

{“name”:“zhangsan”,“age”:12}

JS函数

1累加

function add(){
    //arguments代表所有实参所在的位置,类数组对象
    console.log(arguments);
    var arr = Array.from(arguments);
    //类数组对象转成数组
    // console.log(arr);
    var total = 0;
    for(var i=0;i<arr.length;i++){
        total +=arr[i];
    }
    return total;//一定要给一个返回值
}
console.log( add(3,4));
//计算多个数的累加
console.log( add(3,4,7,9,78));

打印出的结果如图,arguments是一个类数组指出所有实参所在的位置,Array.form将arguments类数组转化为数组,之后定义函数total函数进行累加。

[Arguments] { ‘0’: 3, ‘1’: 4 }
[ 3, 4 ]
7
[Arguments] { ‘0’: 3, ‘1’:4, ‘2’: 7, ‘3’: 9, ‘4’: 78 }
[ 3, 4, 7, 9, 78 ]
101

2.全局变量,局部变量

var d=34
test(1,2);
function test(a,b){
    // var a,b
    a=3;    
    console.log(a,b);  //3,2
    var c=12
    console.log(c);//函数内用var修饰的变量,只能在函数内访问,局部变量
    d=78;
    var d=56;//d=56不使用var修饰的就是全局变量
    console.log(d,'-----');
}

// console.log(c);
console.log(d,'++++++');//34

第一个打印出a和b的值为“3,2”是因为a在函数内又被赋予了一个值而b不变。

第二个打印出“12”是因为在函数内定义了一个变量c且赋值为12,但如果在函数外部打印的话将会报错,用var修饰的变量是局部变量只能在函数内访问。

第三个打印出“56 -----”,是因为即使在函数内定义d为78,但是Var修饰的变量声明会提升,函数声明也会提升,函数声明会提升到最前方,然后是变量声明的提升。

第四个打印出“34 ++++++”是因为在函数外声明的变量是全局变量。

3.回调函数

var test = function(){
    console.log(123);
}
useFun(test);
function useFun(fun){
    var c = 3;
    fun(c);
}
useFun(function(a){
    console.log(a)
})

第一个打印出来为123,第二个打印出来为3
因为c作为回调函数做数据传递给a。

function start(){
    return function(){
        return{name:'zhangsan',
               age:12,
               sayName:function(){
                   console.log(this.name);
               }
        }
    }
}
start()().sayName();//先赋值再运行

函数可作为参数传递,也可作为返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值