JSON对象补充相关(值获取、修改、删除属性、属性是否存在、遍历等)
值的获取两种方式(. 与 [ ])
修改值
删除对象与删除属性(赋null /delete的应用点)
检查属性是否存在对象 (in 的用法)
hasOwnProperty的作用?
对象的循环遍历 (for in)
对象与字符串的互转如何实现? ---> JSON.stringify 与 JSON.parse/eval、
例如:
<script type="text/javascript">
JSON 对象 Object--->$keywordIndex{2} RegExp
var json = {
"name":"xxxxxx",
"user.age":18, user.age是两个字符组合必须加""号不然会报错
"say":function(){
console.log("说话了...");
}
};
获取值方式
console.log(json["user.age"]);
修改
json.name = "Key";
console.log(json["name"]);
删除对象与删除属性
json = null; 删除整个josn对象
delete json.name; delete只能删除属性或变量不能删除对象
console.log(json.name);
检查属性是否存在对象 in 结果返回true就代表存在
delete json.name;
console.log("name" in json);
prototype--------------------> 该对象包含了其对应子类型所持有的特征
console.log("toString" in json);
console.log("valueOf" in json);----------->拆解函数使函数成为基本string类型
console.log("constructor" in json);
hasOwnProperty(); --------------->只检查对象自己的属性,继承的不会检查
console.log(json.hasOwnProperty("toString"));
循环 for ... in
for(var key in json){
console.log(key + "===" + json[key]);
把对象转变成字符串
alert(JSON.stringify(json));
把字符串转变成json对象 JSON.parse(str);eval函数获取json对象
var str = "{\"name\":\"Key\",\"age\":18}";
str = JSON.parse(str);
str = eval("("+str+")");
alert(typeof str +"===" + str.name);
</script>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
定时器的解说 (setInterval 与 setTimeout 以及 定时器的清除等)
定时器:
循环执行:
setInterval(函数名 , 间隔); / setInterval('函数名()' , 间隔);
单次执行:
setTimeout(函数名 , 延迟); / setTimeout('函数名()' , 间隔);---------->只执行一次
注意:定时器函数里面第一个参数是函数名字,如果要执行的函数内部具有参数的话,可以写在匿名函数里面进行调用。
例如:
setInterval(a,1000);------->当a后面添加()时表示立即执行则变为每一秒执行一次a函数
function a(){
console.log(1);
}
setInterval("a(2,4)",1000);---------->调用a函数,并且""号里面也可以写js代码,表示立即执行
function a(c,d){
console.log(c+d);
};
如何清除setInterval定时器呢? ---> clearInterval(timer);
var index = 0;
var timer = setInterval(function(){
index++;
if(index==5){
clearInterval(timer);//清除定时器
}
console.log(index);//结果1 2 3 4 5
},1000);
setTimeout 单次执行 ---> clearTimeout(tim);
var tim = setTimeout(function(){
console.log("执行我...");
},2000);
模拟用法
模拟网站弹出一次是否是会员
var person = "svip";
var x = setTimeout(function(){
if(person=="vip"){
clearTimeout(x);
}else{
alert("请成为会员哦..");
}
},2000);
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
日期对象Date的讲解
日期对象:
var date = new Date(); //获取现在时间
getFullYear(); //获取全年
getMonth(); //获取月份
getDate(); //获取日期
getDay(); //获取星期
getHours(); //获取小时
getMinutes(); //获取分钟
getSeconds(); //获取秒数
getTime(); //获取1970年1月1号到现在的毫米数
区分:
var month = date.getMonth()+1;//结果:0~11....原因是外国的的月份是0-11 而中国是1-12(真实)所以要在后面加1
var week = date.getDay();//获取星期几 0-->6
例如:
function load(){
var d = new Date();---------------------------->var d = new Date();此行代码执行时不能放到load函数外面,因为在load函
var year = d.getFullYear(); 数外面的话在获取浏览器时间时只执行一次,导致在浏览器显示时时间不
var month = d.getMonth()+1; 会自动刷新,而在函数里面时可以循环执行,不断更新时间。
var day = d.getDate();
var week = d.getDay();
var hours = d.getHours();
var min = d.getMinutes();
var sec = d.getSeconds();
szDom.innerHTML = year+"年"+month+"月"+day+"日 "+getWeek(week)+(hours<10?"0"+hours:hours)+":"+(min<10?"0"+min:min)+":"+(sec<10?"0"+sec:sec); |
}; 对时间进行加0补全
load();
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
for循环是瞬间的过程!
for(var i=0;i<doms.length;i++){
doms[i].onclick = function(){
alert(i);
}
}
注意:此时在for循环当中的i虽然是从0 ~ doms.length-1,但是当在循环中具有事件的时候,事件是立马注册的。for循环结束后相当于依次给0~doms.length-1个对象绑定了事件,并且此时的i已经变成doms.length。记住一点,函数只有在执行的时候才会调用,所以当我们执行触发点击事件的时候,从内存当中再去取变量i值的时候,就只能获取i的值为doms.length了