JS中的数据类型
虽然JS是弱类型语言,JS的变量声明的时候并不需要指定数据类型,但是在赋值上每一个数据是由类型的。
值得注意的是ES6之后,又基于以下的6中类型之外添加了一种新的类型:symbol
学习数据类型我们还常用typeof运算符,这个运算符可以再程序的运行阶段动态的获取变量的数据类型。使用的方法很简单:typeof 变量名
typeof运算符的运算结果是字符串,内容为:
“undefined”
“number”
“string”
“boolean”
“object”
“function”,6种结果之一,字符串全部为小写
(ES规范(ECMAScript规范))
原始类型
Undefined
首先看一个例子
var i ;
alert(typeof i);
在这个例子中声明了i,此时没有给变量i赋值,系统默认会给i一个undefined。所以当我们使用typeof运算符时候,得到的自然是undefined
Number
依旧通过一个例子进行学习
function sum(a,b){
if(typeof a == "number" && b== "number"){
return a+b;
}
alert(a+","+ b +"必须都为数字!");
}
//调用
var retvalue = sum(false,"abcd");
alert(retvalue);//undefined
在这个例子中,声明了一个函数(方法)sum,在方法体中不难看出,当输入的参数不为number类型的时候没有返回值,所以定义了一个变量retvalue并没有通过调用sum函数而得到返回值。因此,当查看retvalue的值时,因为没有值,所以系统依旧是默认给上undefined。
Number类型十分强大,和java类比,int,float,long等都“包含”在了Number类型中
String
String常用的属性:lenght
通过代码学习
//小String(属于原始类型String)
var x="lulu";
alert(typeof x);//"string"
//大String(属于Object)
var y =new String("hey");
alert(typeof y)//"object"
//获取字符串长度
alert(x.length)//4
alert(y.length)//3
关于String类型我们应该注意他的常用函数(方法)
indexOf获取指定的字符串在当前的字符串中出现位置
lastindexOf 获取指定字符串在当前字符串中最后一次出现的索引
replace替换
substr截取子字符串
substring截取子字符串
toUpperCase大写
toLowerCase小写
split拆分字符串
挑选几个函数进行代码演示
1.indexOf
alert("http://www.4399.com".indexOf("http")) //0
alert("http://www.4399.com".indexOf("https")) //-1
//判断一个字符串中是否包含某个子字符串
alert("http://www.4399.com".indexOf("https")>0?"包含":"不包含") //不包含
这里使用的是indexOf函数,当我们传入的字符串没有在指定字符串中出现的时候将会返回负数,我们也可以使用这一特性进行判断一个字符串是否出现在指定的字符串中。
2.replace
//Replace(注意:只替换了第一个)
alert("name=value%name=value%name=value%".replace("%","&"))//只替换了第一个
使用replace进行替换时,只能够替换一个“元素”
3. substr和substring的区别
alert("adfghjk".substr(2,4))//fghj
alert("adfghjk".substring(2,4))//fg
不难看出区别
substr(startIndex,lenght)
substring将返回一个包含从start到最后(不包含end)的子字符串的字符串
Boolean
true和false不做详细介绍
Null
这里要说明的是typeof null会返回object,笔者查阅许多说法,有点说是JS设计的时候留下的小bug,也有的说null表示一个空对象指针,所以返回object。
引用类型
Object以及Object的子类
在学习object时我们可以类比java。
1.java语言定义类创建对象:
public class User {
private String username;
private String password;
public User(){}
public User(String name,String psw)
{
this.name=name;
this.psw=psw;
}
}
User user = new User();
User user = new User("list","123")
js语言定义类创建对象:
User=function(name,psw){
this.name=name;
this.psw=psw;
}
var u = new User();
var u = new User("lu");
var u = new User("lu","123456");
1.Object最为重要的属性:prototype属性,作用是给类动态扩展属性以及函数。该属性的强大用代码展示
String.portotype.suibian=function()
{
alter("给String类扩展一个叫做suibian的函数")
}
//调用的前提:只要是字符串就可以
"abc".suibian();
var a = "lulula";
a.suibian();
注意是给类进行扩展函数和属性。
自定义的类同样可以使用该方法,eg:
product = function(no,name,pri)
{
this.no=no;
this.name=name;
this.pri=pri;
this.getpri=function(){
return this.pri;
}
}
var pro = new product(1,"lulu",4.0);
var price = pro.getpri();
alert(price);
product.prototype.getName=function() {
return this.name;
}
var nname=pro.getName();
alert(nname);
console.log(nname);
暂且整理到这里 今后学习过程中有所心得在进行记录。