一、JS中的数据中的 数据类型
1、JS中的数据类型有:原始类型、引用类型
原始类型:Undefined、Number、String、Boolean、Null
引用类型:Object以及Object的子类
2、ES6之后,又基于以上六种类型之外添加了一种新的类型:Symbol
3、JS中有一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型。
Typeof 变量名;
二、undefined类型
undefined类型只有一个值,这个值就是undefioned
当一个变量没有手动赋值,系统默认赋值undefined
或者也可以给一个变量赋值undefined
var i ; //undefined
var k= undefined; //undefined
Alert( i==k); //true
Var y="undefined" ; //"undefined"
Alert(y==k) ; //false
三、Number类型
Number类型包括哪些值?
整数,小数,正数,负数,不是数字,无穷大,都属于Number类型。
关于NaN (表示Not a Number ,不是一个数字 ,但属于Number类型)
什么情况下结果是一个NaN呢?
运算结果本来应该是一个数字,最后算完不是一个数字的时候,结果是NaN
Var a=100;
Var b=" 中国人";
Alert(a/b); //除号显然最后应该是一个数字,但是运算的过程中导致最后不是一个数字,呢么最后的结果是NaN
四、Infinity (当除数为0的时候,结果为无穷大 )
parseInt( ); 可以将字符串自动转换成数字,并且取整数位。
Alert(parseInt("3.9999")); // 3
Alert(parseInt(3.99999)); // 3
parseFloat(); 可以将字符串自动传换成数字
alert(parseFloat("3.14") +1) ; // 4.14
alert(parseFloat("3.2") +1) ; // 4.2
五、Boolean类型
Js中的Boolean类型永远都是两个值,
在Boolean类型中有一个函数叫做:Boolean()。
语法格式:
Boolean(数据)
Boolean()函数的作用是将布尔类型转换成布尔类型。 有就转换为true, 灭有就是false 。
Var username="jack";
If(username){
alert("欢迎你" +username);
}else{
Alert("用户名不能为空!");
}
六、String类型
1、在JS当中字符串可以使用单引号,也可以使用双引号。
Var s1='asdf';
Var s2="ewr";
2、在JS中,怎么创建字符串对象?
第一种:
Var s=“asdf”;
第二种
使用JS内置的支持类String : var s2=new String (“sdf”);
需要注意的是:String是一个内置的类,可以直接用,String的父类是Object。
3、无论小string还是String。他们的属性和函数都是通用的。
4、关于String类型的常用属性和函数?
常用函数:
Length 获取字符串长度
indexOf 获取指定字符串在当前字符串 第一次出现处的索引
lastIndexOf 获取指定字符串在当前字符串 最后一次出现处的索引
Replace 替换
Substr 截取子字符串
Substring 截取子字符串
toLowerCase 转换小写
toUpperCase 转换大写
Split 拆分字符串
考点: 经常问substr和substring的区别?
//substr(startIndes,length)
Alert("abcdefxyz" .substr(2,4)); //cdef
Alert("abcdefxyz" .substring(2,4)); //cd
七、Object类型
1、object类型是所有类型的超类,自定义的任何类型,默认继承object。
2、Object包括的属性
protetype属性(常用的)
constructor属性
3、object类包含哪些函数
toString()
valueOf()
toLocaleString()
4、在JS中定义的类默认继承Object,会继承Object类中所有的属性以及函数
换句话说,自己定义的类中也有prototype属性。
5、在JS中怎么定义类?怎么new对象?
定义类的语法:
第一种: function 类型(形参){
}
第二种: 类名 = function(形参){
}
创建对象的语法:
New 构造方法名(实参); //构造方法名和类名一致。
八、在JS中的类的定义,同时又是一个构造函数的定义,
在JS中类的定义和构造函数的定义是放在一起来完成的
Function User(a,b,c){
//声明属性(this代表当前对象)
//User类中有三个属性 son/sname/sage
this.son=a;
this.sname=b;
this.sage=c;
}
//创建对象
Var u1=new User(111,"tzk",20);
//访问对象的属性
Alert(u1.son);
Alert(u1.sname);
Alert(u1.sage);
Var u2=new User(222,"asd",10);
//访问对象的属性
Alert(u2.son);
Alert(u2.sname);
Alert(u2.sage);
//访问一个对象的属性,还可以使用这种语法
Alert(u2["son"]);
Alert(u2.sname);
Alert(u2.sage);
实例:
Product=function(pon,pname,price){
//属性
This.pon=pon;
This.panme=pname;
This.price=price;
//函数
This.getPrice=finction(){
Return this.price;
}
}
Var pro=new Product(111,"西瓜",4.0);
Var pri=pro.getPrice();
Alert(pri); //4.0
//可以通过prototype这个属性来给类动态扩展属性以及函数
Product.prototype.getPname=function(){
Return this.pname;
}
String . Prototype.suiyi=function(){
Alert("这是给string类型扩展的一个函数,叫做suiyi");
}
"abc".suiyi();
九、null,NaN, undefined这三个值 有什么区别?
这三个的数据类型不一样。
Alert(typeof null); //"object"
Alert(typeof NaN); // "number"
Alert(typeof undefined ) ; // "undefined"
//null 和undefined可以等同
Alert(null == NaN); //false
Alert(null == undefined ); //true
Alert(undefined == NaN); //false
JS中的特殊运算符
==(等同,只判断值是否相等)
===(全等。既判断值是否相等,有判断数据类型是否相等)