日常记录实训第九天
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();//先赋值再运行
函数可作为参数传递,也可作为返回值。
- 点赞
- 收藏
- 分享
- 文章举报
- 日常记录实训第十一天
- 日常记录实训第十天
- 日常处理脚本临时记录 --20130517
- 日常所学代码记录
- 日常记录
- 日常记录
- 【日常SQL】存款统计表增加记录检查分劈比例问题
- 日常问题记录--jsp页面获取struts2对象时为空的原因
- 日常问题记录
- 日常记录
- 日常记录:常用linux指令man page之cp
- mysql日常问题记录
- 日常学习记录(三)
- 服务器IO异常-Ubuntu14.04【日常工作记录】
- 【日常记录】Windows搭建Maven环境
- 日常问题记录--插入记录时报 Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 错误
- 开始用博客记录日常问题
- 日常工作记录: InputMethodManager内存泄漏 解决方法
- 日常问题记录-- java.util.NoSuchElementException
- 工作日常记录 2017-09-20