1、
[]转换成boolean为true;
[]转换成数字为0;
2、
setMonth(n),这里是0-11分别对应1-12月
d.setDate(n);n表示一个月中的一天的一个数值(1 ~ 31):0 为上一个月的最后一天;-1 为上一个月最后一天之前的一天;如果当月有 31 天:32 为下个月的第一天;如果当月有 30 天:32 为下一个月的第二天;40 为下一个月的第9天或第10天;
3、
var
fun = obj.b;
//相当于var fun = function(){alert(this.a)};
fun();//没有谁来调用的时候,this自然指向window
//而window里面没有定义a,所以弹出undefined
4、
Ajax技术核心就是XMLHttpRequest对象。
Ajax技术的工作原理:可以分成3步
1.创建Ajax对象:var xhr = new XMLHttpRequest();
2.xhr 发送请求:xhr.open('get','test.html','true');
xhr.send();
3.xhr获取响应:
xhr.onreadystatechange = function(){
if(xhr.readystate == 4){//请求的状态码
/*
0:请求还没有建立(open执行前)
1:请求建立了还没发送(执行了open)
2:请求正式发送(执行了send)
3:请求已受理,有部分数据可以用,但还没有处理完成
4:请求完全处理完成
*/
alert(xhr.responseText);//返回的数据
}
}
send()前是open()
5、
if(! "a" in window)这句代码的意思是:判断全局对象window中是否有变量a,如果没有变量a,就进入判断将a赋值为1
但是由于变量的提前声明,以上代码与如下代码等价:
var a;
if(!“a” in window ){
a=1;
}
alert(a);
由于变量的提前声明特性,在执行这段代码之后,全局对象window中就已经存在a这个变量了
所以不能进入判断,对a进行赋值
所以a的值为undefined
6、
在javascript中可以操作cookie
cookie会伴随着HTTP请求发送到服务器,但 loaclstorage不会
7、
8、
console.log(b.n);
在查找 b.n 是首先查找 b 对象自身有没有 n 属性,如果没有会去原型(prototype)上查找
当执行 var b = new B() 时,函数内部 this.n=9999(此时this指向b) 返回b对象,b对象有自身的n属性,所以返回 9999
console.log(c.n);
同理
当执行 var c = new C() 时,c对象没有自身的n属性,向上查找,找到原型 (prototype)上的 n 属性,因为 A.n++(此时对象A中的n为4400), 所以返回4400
1)创建一个空对象
2)把这个空对象的__proto__指向构造函数的prototype
3)把这个空对象赋值给this
4)执行构造函数内的代码,注意此时的this指向新对象