对象
-
定义
多个数据的封装体/用来保存多个数据的容器/一个对象代表现实中一个事物 -
意义
统一管理多个数据 -
组成
1.属性:属性名呵属性值组成
2.方法:特殊的属性 -
访问方法
.属性名
[‘属性名’]
必须用[‘属性名’]的情况:属性名包含特殊字符(-、空格)、属性名不确定
函数
-
定义
实现特定功能的n条语句的封装体/只有函数是可以执行的 -
意义
提高代码复用率/便于阅读交流 -
定义函数
1.函数声明
function fn(){
}
2.表达式
var fn=function(){
}
- 调用函数
1.直接调用
test()
2.通过对象调用
obj.test()
3.new调用
new test()
4.临时让test成为obj的方法进行调用
test.call/apply(obj)
回调函数
-
定义
自定义/没有调用/最终执行了 -
常用回调函数
dom事件回调函数
定时器回调函数
ajax请求回调函数
生命周期回调函数
IIFE
Immediately-Invoked Function Expression 立即调用函数表达式
- 匿名函数自调用
(function(){
})()
- 作用
隐藏实现/不会污染全局命名空间
this
解析器在调用函数时每次都会向函数内部传递一个隐含的参数this。
this指向的是一个对象,根据函数调用方式的不同,会指向不同的对象。
1.以函数的形式调用,this是window。
例:test()
2.以方法的形式调用时,this是调用方法的那个对象。
例:p.test() this是p
3.以构造函数的形式调用时,this就是新创建的那个对象。
例:new test() this是新建对象
4.使用call和apply调用时,this是指定的那个对象。
例:p.call(obj) this是obj
原型prototype
每个函数都有一个prototype属性,默认指向一个Object空对象(原型对象)。
原型对象中有一个属性constructor,指向函数对象。
给原型对象添加属性(一般为方法)。
function fun(){
}
fun.prototype.test=function(){
}
- 作用
函数的所有实例对象自动拥有原型中的属性。
显式原型 隐式原型
- 显式原型
每个函数都有一个prototype - 隐式原型
每个实例对象都一个__proto__
对象的隐式原型的值为其对应构造函数的显式原型的值。