javaScript 共有5种基本数据类型:Null,Undefined,String,Number,Boolean
1.下面代码的执行结果:
'''
var arr = [];
arr[0] = 0;
arr[1] = 1;
arr.foo = "v";
alert(arr.length); //结果为2
'''
解析:1.数组也是对象;2.对象不能用length返回其拥有的属性数量
arr.length,对arr对象的length属性进行一个访问
arr.foo = 'hello' 对arr对象创建一个属性,所以.foo 跟.length地位是并列的:就是arr的一个属性,同时arr的数组方法跟这些属性是毫不相关的
2.
'''
var color = 'green';
var test4399 = {
color:'blue',
getColor:function(){
var color ='red';
alert(this.color);
}
}
var getColor = test4399.getColor;//即var getColor = function(){var color = "red";alert(this.color);};
getColor(); //执行getColor()函数时this指向的window,因为window.color为green,所以弹出green
test4399.getColor();//此时this指向的是test4399,test4399.color为blue,所以弹出blue
'''
结果:green , blue
getColor();相当于普通的函数调用,此时this指向window,this.color应该为全局变量的值
test4399.getColor();此时this指向调用函数的对象test4399,因此this.color应该为对象的属性值
知识点一: js函数调用时加括号和不加括号的区别.不加括号相当于把函数代码赋给等号左边,加括号是把函数返回值赋给等号左边。
知识点二: js中this的用法,this总是指向调用它的对象,倒数第二行的getColor为windows调用的,倒数第一行的getColor是test4399对象调用的
3.执行如下程序:
'''
var x=0;
switch(++x) {
case0: ++x;
case1: ++x;
case2: ++x; //没有break,结果为3.
}
'''
4.
var obj = {};
obj.log= console.log;
obj.log.call(console,this);
网友评论