- ECMAScript js的标准语法
- DOM(html每一个标签对应一个对象)
- html(控制内容)+css(控制样式)+js(控制行为)
html+js
-
嵌入式
<head> <script> //js代码 </script> </head>
-
导入(保证了html和js代码解耦)
<head> <script src=""></script> </head>
注释
两种
//
-
/*
*/
标识符
由字母,数字,下划线,$,不能以数字开头,不能为关键字
数据类型(数据最小的单位)
弱类型语言
- 基本数据类型
- undefined;
var a;//a的数据类型undefined - null;
var b=null;//b的数据类型null
var result=typeof b; //object - number;
var a=10; - boolean;
var a=true; - string;
"" , '';
检测变量所属的数据类型
var sesult =typeof 变量名
提问框
var result = prompt("提问内容");
alert("提示信息");
console.log();
基本数据类型之间的转换
Undefiend
一般不考虑其他基本数据类型转换为undefined
Null类型
一般不考虑其他基本数据类型转换为null
Boolean类型
其他类型转换为Boolean:
虽然boolean类型的取值只有两个,但是ECMAScript中所有的类型的值都有
与这两个Boolean值等价的值
Boolean true false
String 非空字符串 ""
Number 任何非0非NaN 0和NaN
Undefined undefined
Null null
例如:
Boolean(""); //false
Boolean(0); //false
Boolean(NaN); //false
Boolean(null) //false
Boolean(undefined) //false
Boolean("briup"); //true
Boolean(1); //true
Number
isNaN(para) 当参数para不是数值的时候返回true
数值转换
Number()
如果转换的值是null,undefined,number,boolean
Number(true); //1
Number(false); //0
Number(10); //10 如果是数字值,原样输出
Number(null); //0
Number(undefined); //NaN
如果是字符串:
Number("123"); //如果仅包含数值,转换为对应的数值
Number("234.1");//解析为对应的小数
Number("+12.1");//首位为符号位,其余为为数值,转换为对应的数值
NUmber("1+2.3");//NaN 符号位出现在其他位置,解析为NaN
Number("0xa"); //如果仅包含十六进制格式,转为为对应的十进制的值
Number("010"); //注意!不会当做八进制被解析,结果为10
Number(""); //空字符串被转换为0
Number("123ac");//包含其他字符: NaN
Number(" 12"); //12
parseInt()
-
如果转换的值是null,undefined,number,boolean
parseInt(true); //NaN parseInt(false); //NaN parseInt(null); //NaN parseInt(undefined); //NaN parseInt(10); //10 如果是整数值,原样输出 parseInt(10.3); //10 如果是小数,舍去小数点一级后面的内容
-
如果是字符串:
parseInt("123"); //123;如果仅包含数值,转换为对应的数值 parseInt("234.1");//234;小数点后面的数值省略 parseInt("+12.1");//12; 首位为符号位,其余为为数值,转换为整数,结果为 parseInt("0xa"); //10; 如果仅包含十六进制格式,转为为对应的十进制的值 parseInt("010"); //10; 注意!不会当做八进制被解析,结果为10 parseInt(""); //NaN;空字符串被转换为NaN parseInt("1+2.3");//1; 如果首位为数值,依次向后解析,找到连续的数值,直到 遇到第一个非数值的,将之前获取的数值转换为Number返回 parseInt("123ac");//123;
parseFloat()
与parseInt()类似,
但是会将小数转换为对应的小数
String
toString() 转化为字符串
包装器类 number -> Number
var num = 10;
num.toString(); "10"
num.toString(2); "1010"
num.toString(8); "12"
num.toString(16);"a"
注意:
null ,undefined 没有toString() 方法
null.toString() //报错 TypeError: null has no properties
undefined.toString(); //报错 TypeError: undefined has no properties
String() 用来将任意数据类型转换为字符串
String(null) "null"
String(undefined); "undefined"
复杂数据类型 Object
ECMAScript中的对象其实就是一组数据和功能的集合。
创建Object实例:
new Object() => {}; 创建一个空对象
new Object();
var person = new Object();
person.name = "briup";
person.age = 22;
使用对象字面量表示法
不同的属性之间用','分割,属性名和属性值之间用':'分割
var person = {
name : "briup",
age : 22
};
访问对象属性
点表示法,右侧必须是以属性名称命名的简单标识符
person.name
中括号表示法,中括号中必须是一个计算结果为字符串的表达式
可以通过变量访问属性
var a = "name";
person[a]; //既person["name"]
person["first name"]
如果属性名中包含语法错误的字符,或者属性名使用的是关键字或保留字,
可以使用中括号 person["first name"]
删除属性
delete只是断开了属性和宿主对象的联系,而不会操作属性中的属性,并且delete
只会删除自有属性,不能删除继承属性。在销毁对象时,为了防止内存泄露,遍历属
性中的属性,依次删除所有属性。
- 语法:delete 属性访问表达式
- 例子:delete stu.name //删除学生对象中的name属性
检测属性
in 检测某属性是否是某对象的自有属性或者是继承属性
"toString" in student
hasOwnProperty()检测给定的属性是否是对象的自有属性,对于继承属性将返回false
var o = {
x:1
}
o.hasOwnProperty("x"); //true, x 为o的自有属性
o.hasOwnProperty("y"); //false,o 中不存在属性y
o.hasOwnProperty("toString"); //toString为继承属性
propertyIsEnumerable() 检测给定的属性是否是该对象的自有属性,并且该属性是可枚举的
通常由JS代码创建的属性都是可枚举的,但是可以使用特殊的方法改变可枚举性。
student.propertyIsEnumerable("toString") //false 不可枚举
Object属性及方法
Object 类型所具有的任何属性和方法也同样存在于其他对象中,任何对象继承于Object对象
Object中常用的方法:
- hasOwnProperty(propertyName); 用于检查给定的属性名是否是对象的自有属性,
- toString(); 返回对象的字符串表示
- valueOf(); 返回对象的字符串,数值,布尔值的表示。
------- - propertyIsEnumerable(propertyName); 用于检查给定的属性在当前对象实例中是否存在
- constructor: 保存用户创建当前对象的函数
- isPrototypeOf(object); 用于检查传入的对象是否是原型
- toLocaleString(); 返回对象的字符串表示,该字符串与执行环境的地区对应
对象序列化
对象序列化是指将对象的状态转换为字符串,也可以反序列化,将字符串还原为对象
函数,RegExp,Error对象,undefined值不能序列化和反序列化。
- JSON.stringify(obj) 将对象序列化为Json字符串,只能序列化对象可枚举的自有属性。
- toJSON() Object原型中没有toJSON方法,但是对于要执行序列化的对象来说
JSON.stringify()方法会调用toJSON方法,如果待序列化的对象中存在这个
方法,则调用,返回值即时序列化的结果,而不是原始对象。 - JSON.parse(jsonStr) 反序列化