一、综述

javaScript中的数据类型分为两类:

简单类型:Boolean,Number,String

引用类型:Object

其他:undefined代表变量没有初始化,null代表引用类型为空,typeOf null 返回object

1)简单类型和引用类型的差异,和其他语言类似,如存储位置等

2)对于Boolean,Number,String这三种简单类型,javascript还为之提供了对应的基本包装类型,基本包装类型和引用类型的差别在于对象的生存周期,在读取模式下访问基本类型值时,后台对自动为之创建基本包装类型的对象,提供了相关方法可以操作基本类型,但是操作基本类型值的语句一经执行完毕,就会立即销毁新创建的基本包装类型。

3)函数也是对象,这点和java等语言不通,因此函数也可以拥有方法,可以作为函数形参等。

4)判断元素类型:使用typeOf操作符(返回值可能是Boolean,Number,String,Object,Function,Undefined),判断引用类型具体是哪一个对象的实例,使用isinstanceOf

二、基本类型

var a=字面量 的形式来定义基本类型

1.Boolen

1)具有两个字面量true,false(注意区分大小写)

2)将其他类型的值转换为布尔值,采用Boolen(var);具体转换规则可以参见教材。如空字符串会转换为false

3)在if()等判断中,boolean转换时自动进行的。

2.Number类型

1.有进制区别,有整数和浮点数之分。定义都适应var a=字面量 的形式

2.Number.MIN_VALUE代表最小数值,Number.MAX_VALUE代表最大数值,全局属性Infinity代表正无穷,-Infinity代表负无穷,NaN代表非数,可以使用isNan()进行判定

3,将其他任何类型转换为数值类型可以用Number()函数,将字符串转换为数值类型使用parseInt(var,进制)或者parseFloat(var)

4,指定小数点位数可以使用num变量.toFixed(3),转换为指数类型表示可以使用num变量.toExponetial()

5,String类型

1,length属性:字符串长度

2,将某个值转换为字符串,可以对其调用toString(),最简单的是加上一个空字符串

字符串相关操作方法:

1,字符串拼接,使用"+",也可用concat()方法

2,字符串切割,slice(),substr(),substring()方法,用法大同小异,掌握一种即可

5,查找子字符串:indexof()和lastIndexof();另一个查找方法是search(),参数可以是字符串或者正则表达式

6,删除前后空格:trim()

7,大小写转换:toLowerCase()和toUpperCase()

8,正则匹配:match()方法,调用效果和正则对象RegExp的exec()方法相同

9,字符串替换:repalce(),第一个参数可以是字符串或者正则表达式,如果是字符窜,那么只替换第一个子字符串;如果是正则,则可以替换所有匹配的子字符串。

10,字符串比较:因为字符串是基本类型,因此可以使用"=="进行比较;‘===’是强等。此外还有一个方法是localCompare()方法,会根据字母表中的排序比较大小,返回正数,0或者负数。

11,字符串切割:split()。分隔符可以是子字符串,也可以是正则

12,字符串中访问特定字符:charAt()或者charCodeAt();返回对应的字符或者字符编码

三、引用类型

引用类型都是Object或者其子类(js其实并没有子类这个概念?),js内置了一些引用类型来方便操作,如Date,Array,Math,RegExp等,这些类型都是全局对象window的属性。所有的object类型都有以下属性或方法

constuctor
hasOwnProperty(propertyName)
isPrototypeOf(object)
propertyIsEnumerable(propertyName)
toString()
valueOf()
toLocalString()

1.object类型

感觉js中的object类型更像java中的hashMap或者python中的dict类型,也就是键值对的感觉

1)新建,两种方法,构造函数和字面量

//构造函数的方法
var person=new Object();
person.name="bobo";
person.age=;
//字面量的方法
var person={
  name="bobo",
  age=
}

2)属性可以加引号也可以不加;访问属性可以用点表示法,也可用方括号表示法

2.Array类型

1.新建,两种方法,构造函数和字面量

//构造函数
var list=new Array();
//字面量
,,}

和java等语言中的数组不同的是,js数组的每一项可以保存不同类型的变量,大小也是可以动态调整的

检测一个变量是否是数组,可以使用Array.isArray方法

2.相关属性和方法

1)数组长度:length,这个属性不是只读的,通过设置这个属性,可以从数组末尾移除项(设置值<实际长度);或者向数组中添加项

2)将数组转换为字符串:join("分割符"))

3)相关栈方法:pusth(),pop();shift(),push();unshift(),pop()通过这些方法,可以使用数组来模拟队列或者栈

4)数组排序:sort(),reverse()可以接收一个排序函数作为参数

5)数组合并:concat()

6)数组拆分:slice(),接收一个或者两个参数,即要返回项的开始位置和结束位置

7)功能强大的splice():可以用于删除,插入,替换数组中的某一项

8)查找数组中的元素:indexOf()和lastIndexOf()

9)相关迭代方法,这些迭代方法的参数都是一个函数,

every(),对数组中的每一项运行给定函数,如果每一项都返回true,那么就返回true

filter(),对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组

forEach(),对数组中的每一项运行给定函数,没有返回值

map(),对数组中的运行给定函数,返回每次调用该函数的结果组成的数组

some(),对数组中的每一项运行给定函数,如果该函数的任一项返回ture,则返回true

10)归并方法

reduce()和reduceRight(),接受参数为函数function(prev,cur,index,array)

3,Date类型

1.创建

var now=new Date()

2,常用属性和方法

1)Date.now()返回当前的日期和事件的毫秒数

2)getFullYear(),getMonth(),getDate(),getDay(),getHours()等

4,Math对象(有点类似于静态方法调用的感觉)

常用操作:

1)Math.min()和Math.max(),传入的参数用,分割。如果得到数组中的最大值,可以使用Math.max.apply(Math,arrayVar)的形式

2)Math.ceil(),Math.floor(),Math.round()

3)Math.random()

4)其他各种数学运算方法

5,RegExp类型

1,创建,有字面量和构造函数两种方法

var express=/pattern/flags

var pattern=new RegExp("[bc]at","i"),在使用构造函数创建的时候,因为参数是字符串,所以在需要的时候要进行双重转义

2.常用属性和方法

exec()  接受字符串参数,会返回匹配组相关信息,关于正则一向不是很明白,用到时候再看吧

test() 接受字符串参数,返回是否匹配的布尔值

6,Function类型

在js中,函数也是对象,也和其他引用类型一样具有属性和方法,因此可以可以作为函数的形参,也可以作为函数的返回值。

1)在函数内部,有两个特殊的对象arguments和this,this和其他语言中的this一样,这里重点届时arguments

js中没有函数签名的概念,也不能实现传统意义上的重载。具体的说,js函数不在乎传递进来多少个参数,也不在乎是否通过命名的形参传入,在函数体内,可以通过arguments对象访问函数的参数数组。

arguments拥有一些属性:

callee:指向当前的函数对象

caller:指向调用当前函数的函数的引用

函数的属性和方法

1)length属性:代笔函数希望接收的参数的个数

2)prototype这个回头再说吧,对js的引用类型而言,prototype是保存它们所有实例方法的真正所在

函数方法

apply()和call(),可以在特定的作用于调用函数,接受的第一个参数是调用函数的对象,另一个是传入函数的参数。apply()使用数组传入参数,而call()则使用,来分割传入的参数

7,URI编码方法

1)encodeURI()主要用于对整个uri进行编码,与之对应的是decodeURI()

2)encodeURIComponent()主要用于对于附加在URI后面的queryString部分进行编码,与之对应的是decodeURIComponent()

最新文章

  1. SNMP高速扫描器braa
  2. java文件名更改一直是false,看看是否是文件打开没有关
  3. sql server命令行
  4. easyui-datagrid 两次请求
  5. WEB-INF/views/menu/list.jsp (line: 26, column: 58) equal symbol expected
  6. C++中变量自动初始化的问题
  7. ↗☻【HTML5秘籍 #BOOK#】第8章 使用CSS3
  8. Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置
  9. List&lt;object&gt;排序 z
  10. ToString()和Convert.ToString()的区别
  11. jquery删除未来项 jquery on
  12. HighGUI图形图像界面初步——滑动条的创建和使用
  13. mysql把一个查询结果当作一个子集来查询
  14. linux使用npm成功安装命令后,执行时却报找不到命令的问题
  15. lua table排序报错与解决
  16. Golang的类型断言
  17. BZOJ1455 罗马游戏 左偏树 可并堆
  18. length、length()、size()区别 List与String相互转换
  19. flume 使用手册
  20. mysql基础知识(3)

热门文章

  1. Nginx 笔记与总结(10)Nginx 与 PHP 整合
  2. mysql字段额外属性,除去字段类型外的其他属性
  3. java int转integer方法
  4. CodeIgniter 发送邮件
  5. MySQL解压版安装配置
  6. GUN485项目的总结
  7. java-冒泡排序
  8. RedirectResult,RedirectToRoute
  9. Java中调用c/c++语言出现Exception in thread &quot;main&quot; java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误
  10. Lazarus中Base64的操作