Javascript知识回顾
js的组成
- ECMAscript 核心 几乎没有兼容问题 担任解析器的角色 处理我们的逻辑代码
- DOM 文档对象模型;文档指的就是网页;把网页变成一个JS可以操作的对象;给了JS可以操作页面元素的能力;document;有一些兼容性问题;
- BOM 浏览器对象模型;给了JS操作浏览器的能力;window;有许多兼容性问题
js的引用
外部文件 script标签 src属性
<body> <script type="text/javascript" src="index.js"></script> </body>
内部 script标签区域
<head> <script> </script> </head>注释方式 单行注释 多行注释
数据类型
基本类型(primitive)
1.Undefined
在使用var声明变量,但未对其加以初始化时,这个变量的类型就是undefined,且其默认初始化值为undefined
对未声明与初始化的变量,直接使用,那么这个变量的类型也是undefined,但是没有默认化初始值。
type test;//undefined 直接调用就会报错2.Null
null类型的默认值是null,表示一个空对象指针,如果定义的变量准备在将来用于保存对象,那么就该将该变量初始化为null。3.Boolean
该类型有两个值:true false
Boolean()方法 可以转换其他数据类型为布尔值4.Number
整数 可以通过10进制 8进制 16进制表示
浮点数 该数值必须包含一个小数点,小数点后面必须有一位数字,如果小数点后只有0,自动转换成整数
浮点数占据的空间内存是内存的两倍,极大极小的数字会用e科学表示法。NAN
- 1.即非数值,是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数,未返回数值的情况。比如任何数值除以0,本是不符合规范的,js里,这样的操作返回NaN(但是实际上,只有0除以0时返回NaN,其他则无穷值)。
- 2.NaN有两个不同寻常的特点:任何涉及NaN的操作都会返回NaN,NaN值与任何值都不相等,包括本身。
- 3.isNaN()函数,这个函数可以判断,传递的参数是否“不是数值”,这里涉及数值转换的问题,例如“10”这个字符串就可以转换为10,但是“blue”这个字符串则无法转换为数字,所以isNaN(“blue”)==true
number() 可以 任何类型
parseInt() parseFloat() 只用于字符串类型5.string
‘’ “” 单引号 双引号
基本类型的特点:
基本类型的特点是不可变的
复杂对象类型 Object 对象是属性和方法的集合
基本类型以外 就是引用类型
引用类型的特点
引用类型的值是可变的
变量 var (let const)
变量是一个杯子,它的类型是由它里面存放的东西决定的
可以通过typeof命名规范 一般推荐驼峰式命名
- 语句
- 运算符
() 括号 提升运算级别 优先运算
++ – 递增 递减 有前置和后置
前缀形式是先运算再赋值后缀形式是先赋值在运算
! && || 逻辑非
*/%
+ 加法 拼接
<= >=
==判断相等 !=不相等
===全等 !==不全等
< >
?: 三元条件表达式
= += -=
流程控制语句:
if 最基本的条件判断语句
switch
条件运算符 num1 > num2 ? num1 : num2
for、while、do-while
for-in 遍历对象
for(var i in obj){
console.log(i);
}
for in不要对数组循环,因为for in的顺序不是固定的
forEach 遍历数组
try catch
width
eval
作用域
this
this是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用
function test(){
this.x = 1;
}
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
- 在全局作用域下面调用this,this指向window
- 函数声明,匿名函数,函数表达式在全局中调用,this指向window
- new关键词构造的对象,this指向创建该对象的函数
- this当前的函数为对象属性的对象,this指向该对象
普通函数调用
function test(){ this.x = 1; console.log(this.x); } test(); // 1作为对象方法的调用
function test(){ console.log(this.x); } var h = {}; h.x = 1; h.t = test; h.t(); // 1作为构造函数调用
function test(){ this.x = 1; } var h = new test(); console.log(h.x); // 1apply() call()
function x = 0; function test(){ console.log(this.x); } var h = {}; h.x = 1; h.t = test; h.t.apply(); // 0
- “构造函数”,其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上
用构造函数生成实例对象,有一个缺点,那就是无法共享属性和方法。
继承
对象之间的继承方法
构造函数绑定
使用call或apply方法,将父对象的构造函数绑定在子对象上
任何一个prototype对象都有一个constructor属性,指向它的构造函数
每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性。
