函数简介
- 函数也叫方法,封装代码,实现高度复用
- function关键字 加()调用 调用的参数叫做实参,定义函数中的参数为形参
- 形参相当于隐式声明一个变量,承接实参,一一对应
- 无返回值函数,返回值就是undefined 有返回值函数
函数的分类以及定义方式
**可以作为参数传递**
`
funtion sum (sum) {
sum = 'haha'
console.log(sum)
}
sum(sum)
sum(sum)
`
**可以作为事件处理函数**
**可以作为返回值**
-
有名函数
定义函数名的方式 function name () {}
函数表达式的方式 var name = function () {} 调用在声明之后
-
匿名函数
函数自调用 (function(){})(); 只能调用一次
对象存储方式
- 简单数据类型:
- 值类型:number string boolean
- 空类型:null undefined
- 复杂数据类型:
- 引用类型:object

创建对象
- new Object()
工厂模式var obj = new Object() obj.name = xiaoming obj.age = 11 obj.sing = function (){}function creatPerson (name,age,sing){ var obj = new Object() obj.name = name obj.age = age obj.sing = sing return obj } - 构建函数创建对象(相当于创建一种类型class)
- 在内存中开辟空间
- this指向当前实例对象
- 动态添加属性和方法
- 将当前对象从构造函数中返回出去 (不需要return)
function Person (name,age,sing){ this.name = name this.age = age this.sing = sing } var temp = new Person(xiaoming,11) var temp = new Person(xiaoming1,11)
作用域
就是变量的访问区域
-
预解析:js会预先将带var定义的变量将 声明 提升到全局作用域的顶端
-
全局对象:浏览器顶级对象window
-
全局作用域:直接编写在 script 标签之中的JS代码,都是全局作用域;
-
全局变量:在全局作用域下定义的方法和变量都是window下边的属性或者方法
定义方式:var xxx = xxx 会进行预解析 不带var 不建议 -
函数作用域:在函数体中声明的带var变量,外界是无法访问的,在函数体内会优先访问。就是函数的私有变量。也就是函数作用域的局部变量。
- 在函数作用域中访问一个变量时,先从当前函数作用域中找带var声明的变量,没有,就去全局作用域中找
- 在函数作用域中,var声明的变量会将声明提升到函数作用域的顶端。
- 在函数作用域中不带var的变量一定是全局变量
- 函数中的形式参数相当于隐式声明
- 定义函数名的方式定义的函数会将声明提升到全局作用域的顶端,所以可以先调用在定义
- 函数表达式的方式定义的函数相当于变量提升,所以只能先定义,后调用
var a = 'haha'
function a () {
console.log(1)
}
a()
面向对象思想
- 万物皆对象
- 每个是事物都是对象,根据这个对象的特征(属性)和行为(函数或者方法)抽象出一类群体。再通过这类群体实例化到具体的某一对象。这个抽象和实例化的过程就是面向对象思想。
- 面向过程:注重过程
- 面向对象: 注重结果
原型对象

原型链:实例对象在访问属性或方法时,先从自身构造函数中找,没有,就去原型对象中找,没有,上一层的原型对象中去找,一直找到Object原型对象中。没有,就报错!
instanceof 判断是否是谁的实例