js的简介
完整的js实现包含了三个部分:
ECMAScript,DOM和BOM.
js的特点:
- 解释性语言
- 类似于c和java的语法结构
- 动态语言
- 基于原型的面向对象
js基本语法
innerHTML() 通过这个属性可以获取元素内部的html代码
innerText() 该属性可以获取到元素内部的文本内容
数据类型指的就是字面量的类型:
在js中一共有六种数据类型
- string 字符串
- number 数值
- Boolean 布尔
- null 空值
- Undefined 未定义
- Object 对象
强制转换:
将其他数据类型转换为String
方式一:调用被转换数据类型的tostring()方法,该方法不会影响到原变量
注意:null和undefined这两个值没有tostring()方法,如果调用他们的方法,会报错.
方式二:调用string()函数,并将被转换的数据作为参数传递给函数
将其他数据类型转换为Number
方式一::调用Number()函数
字符串 -->数字
- 如果是纯数字的字符串,则直接将其转换为数字
- 如果字符串种有非数字的内容,则转换为NAN
- 如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
布尔 -->数字
true 转成 1
false 转成 0
null -->数字 0
undefined -->数字 NAN
方式二:这种方式专门对付字符串 parseInt(),parseFloat()
如果是非string使用parseInt()或parseFloat()它会先将其转换为String然后在操作
对象的分类:
-
内建对象
由ES标准中定义的对象,在任何的ES的视线中都可以使用
比如: Math String Number Boolean Function Object -
宿主对象
由js的运行环境提供的对象,目前来讲主要是指由游览器提供的对象
比如 BOM DOM -
自定义对象
由开发人员自己创建的对象例如: var obj = new Object();
向对象添加元素: obj.name = “孙悟空”; obj.age = 18
删除对象的属性 delete 对象.属性名 delete obj.name
如果需要使用特殊的属性名,不能采用.的方式来操作
需要使用另一种方式:
语法: 对象[“属性名”] = 属性值
读取时也需要采用这种方式
使用[]这种形式去操作属性,更加灵活
在[]中可以直接传递一个变量,这样变量值是多少就会去读取那个属性
js基础
函数的简介
- 函数function:
- 函数也是一个对象
- 函数可以封装一些功能(代码),在需要时可以执行这些功能(代码)
- 函数中可以保存一些代码在需要的时候调用
- 使用typeof检查一个函数对象时,会返回function
- 使用构造函数(了解即可)
var fun = new Function(“console.log(‘Hello 这是我的第一个函数’);”) - 使用函数声明来创建一个函数
语法: function 函数名([形参1,形参2…形参N]){} - 使用函数表达式来创建一个函数
语法: var 函数名 = function([形参1,形参2…形参N]){} - 立即执行函数 函数定义完,立刻被调用,这种函数叫做立即执行函数,立刻执行函数往往只会执行一次
语法:(function(){alert(“我是一个匿名函数~~”)})();
作用域
作用域指一个变量的作用的范围
- 全局作用域:
直接编写在script标签中的JS代码,都在全局作用域
全局作用域在页面打开时创建,在页面关闭时销毁
在全局作用域中有一个全局对象window,我们可以直接使用,它代表是一个游览器的窗口,他有游览器创建我们可以直接使用
在全局作用域中:
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
变量的声明提前
- 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会被赋值)
- 但是如果声明变量时不使用var关键字,则变量不会被声明提前
函数的声明提前
- 使用函数声明形式创建的函数function函数(){}
- 他会在所有的代码执行之前就被创建,所以我们可以在函数声明前来调用函数.使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
2. 函数作用域:
- 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
- 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
- 在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量
- 当在函数作用域操作一个变量时,它会在自身的作用域中寻找,如果有就直接使用,如果没有则向上一级作用域中寻找,直到找到全局作用域,如果全局作用域依然没有找到,则会报错ReferenceError
- 在函数中要访问全局变量可以使用window对象
this关键字
解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象,
根据函数的调用方式不同,this会指向不同的对象
- 以函数的形式调用时,this永远都是window
- 以方法的形式调用时,this就是调用方法的那个对象
DOM
获取元素节点:
通过document对象调用
- getElementById() 通过id属性获取一个元素的节点对象
- getElementsByTagName() 通过标签名获取一组元素节点对象
- getElementsByName() 通过name属性获取一组元素的节点对象
事件,就是用户和游览器之间的交互行为.比如:点击按钮,鼠标移动,关闭窗口
常用:为按钮的对应事件绑定处理函数的形式来响应事件,这样当事件被触发时,其对应的函数将会被调用
游览器在加载一个页面的时,是按照自上向下的顺序加载的
读取到一行就运行一行,如果将script标签写在页面的上边,在代码执行时,页面还没有加载(如果想将js代码写在head头部里面,可以给window绑定onload事件会在整个页面加载完成之后才触发)
childNodes属性会获取包括文本节点在内的所有节点
根据DOM标签标签空白也会当成文本节点