您的位置:首页 > 其它

日常记录实训第九天

2020-02-04 09:46 134 查看

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

1.对象属性删除

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的属性。

2.对象属性遍历

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();//先赋值再运行

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
橙小甜 发布了11 篇原创文章 · 获赞 0 · 访问量 68 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: