一共6中数据类型
+ number 1
+ string “1” //string 也是基础类型
+ boolean true
+ undefined[typeof为undefined] 未定义
+ null[typeof为object] var a = null;
+ Symbol
js中的引用类型
+object {“name”:”jack”,”age”:12} 注:数组也是object,array[typeof为object] [1,2,3]
+function
是function,不是object
js中所有的基础类型都是不可变的。基础类型是值类型,object是引用类型。
var s = "abc";
s.length = 100;
s.length;//依然是3
基础类型调用函数或者属性时,是先将通过s产生为一个新对象,操作都是在这个对象上进行的。不影响原有数据s。
全局变量默认所属的对象是window,如
var name = "jack";
window.name = "jack";
undefined与null比较
2者参与计算都是false
undefined不是对象,null是对象
null===undefined //false
null==undefined //true
NaN
NaN不等于任何一个数字,虽然其本身确实是个数字。所以有Nan==NaN为false
isNaN一般用来判断是否为数字
定义一个类,并定义其函数:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
this.__defineGetter__("firstname", function(){
return firstname + "mask2";
});
this.__defineSetter__("firstname", function(val){
firstname = val +"mask1";
});
}
var x = new person("sun","chunjie","28","black");
x.firstname = “dddsg”;
alert(x.firstname);
//字面定义,以下也是定义对象
var p = {
x:0,
y:10,
z:100,
put:function(){},
get x(){//x属性的getter方法
return 0;
}
set x(newX){//x属性的setter方法
this.x = newX;
}
};
以下方法定义的都是对象,用new就是引用类型了。
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;