JS的使用方式
对象
八种数据类型方式
数值型(number)
字符串型(String)
布尔型(Boolean)
Undefined:
Null:
对象(object):
- 对象(object) {name:“zhangsan”,age"18}
- 数组(array)[1,2,3]
- 函数(function) function test() {}
对象的创建三种方式
一.字面量形式创建
- var 对象名 = {}; 创建一个空对象
- var 对象名 = {键1 : 值1 , 键2 : 值2 , 键3 : 值3,… …}
二.通过new Object 对象创建
var 对象名 = new Object (); 创建一个空对象.
通过对象名.属性名 = 值 , 来赋值.
三 . 通过Object 对象的 create 方法创建对象
var 对象名 = Object.create(null);–>创建空模板对象
通过对象名.属性名 = 值 , 来赋值.
var 对象名 = Object.create(对象);–>以指定对象为模板创建对象
对象的序列化和反序列化
第一种方法
序列化对象:
JSON.stringify( objet )
反序列化对象:
JSON.parse( jsonStr )
第二种方法–利用eval,可将json串转为json对象
- 得到的json对象名就是 jsonObj
eval("var jsonObj = " + jsonStr);
- 对象中有多个属性
var jsonObj = eval( "("+jsonStr+")");
- 对象中只有一个属性
eval(jsonStr);
将json格式数组字符串解析为json格式数组
eval("var arrObj = " + arrStr);
或:
eval(arrStr);
例:
var arr="[{name:'zs',pwd:'123'},{name:'ls',pwd:'123'}, {name:'ww',pwd:'123'}]";
eval("var arrObj = " + arr);
var arrObj2 = eval(arr);
js的使用方式:
1. 行内JS:写在标签中的代码
2. 内部JS写在页面中的JS代码
<scrip type="text/javascript">
//js代码写在双标签之间
</script>
可以放在html页面中的任意位置:
a.<head></head> 标签中
b.<body></body>标签中
c.写body标签后
3.外部JS
引入外部的js文件
<script type="text/javascript" src="文件地址">
</script>
注:script标签设置了src属性,则在双标签中写的js代码无效;
通常我们会使用2,3的写法.
数据类型
数值(number) : 整数和小数(比如 1 和 3.14)
字符串(String) : 字符组成的文本(比如"Hello World")
数据类型的强转
转String类型数据:
String()—用构造器转String类型数据, 用构造器可以将 null 和 undefined 转成String类型的数据.
toString()—用方法转String类型数据, 不能转String类型.
转Boolean 类型数据:
console.log(Boolean("0")); --->true;
console.log(Boolean(0)); --->falese;
数组
数组的3种定义方式 :
- var arr = [值1, 值2, 值3] ;
- var arr = new Array(值1, 值2, 值3) ;
- var array = new Array ( size ) ;
数组的长度可以通过length属性来获得, 并也可以通过length属性来改变长度.
数组的每一个元素都可以被访问和修改, 甚至是不存在的元素, 无所谓越界.
数组的遍历
数组的3个循环方式
- 普通for循环遍历
for(var idx=0;idx<arr.length;idx++){
console.log(arr[idx]);
}
- for…in
for(var idx in arr){
console.log(arr[idx]);
}
- forEach
arr.forEach(function(elem,idx){
console.log(idx+"-->"+elem);
});
注意:
- for --> 不遍历属性
- for in -->不遍历索引中的undefined
- foreach -->不遍历属性和索引中的undefined
数组提供的操作方法
常用方法
push —> 添加元素到最后
unshift —> 添加元素到最前
join —> 数组转成字符串
split —>字符串转成数组
pop 删除最后一项
shift 删除第一项
join 数组转成字符串
indexOf 数组元素索引
slice 截取(切片)数组,原数组不发生变化
splice 剪接数组,原数组变化,可以实现前后删除效果
concat 数组合并
函数的三种定义方式
- function 函数名([参数列表]){}
- var 变量名 = function ([参数列表]) {}
- var add = new Function(‘x’,‘y’,‘return (x + y)’)
闭包
闭包就是能够读取其他函数内部变量的函数。
由于在 Javascript 语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。
它的最大用处有两个:
一个是前面提到的可以读取函数内部的变量
另一个就是让这些变量的值始终保持在内存中。
以及还可以避免变量名冲突的问题。
例:
function waterFlower(water) {
function flowerType(flowerName,flow) {
water = water-flow;
if(water<flow) {
water = water +100
}
document.write("给"+flowerName+"浇"+flow+"ml水,还剩下"+water+"的水</br>");
}
**return flowerType;** ----->注意此处要的是要return整个函数,所以不要();
}
var water1 = waterFlower(200);
water1("水仙",50);
water1("菊花",50);
water1("霸王花",50);
water1("玫瑰花",50);
water1("月季花",50);
water1("喇叭花",50);
water1("一串红花",50);
闭包的构成:
1、外部函数嵌套内部函数
2、内部函数使用外部函数的环境
3、外部函数返回内部函数
JS中的常用全局属性和方法
Infinity 表示正无穷大的数值
NaN 非数值 undefined 未定义的值
eval() 计算JavaScript代码串,返回结果
isFinite() 检验一个值是否是无穷大的数字
isNaN() 检验一个值是否是非数字的值
parseFloat() 从字符串解析一个带小数点的数字
parseInt() 从字符串解析一个整数
encodeURIComponent() 返回参数的副本,其中某些字符被十六进制的转义序列替换了
decodeURIComponent() 对encodeURIComponent()转移的字符串解码