1.封装概述
js基于对象编程(遇到的东西几乎都是对象)但并不是面向对象编程(没有类)
2.对象创建的5种方式
1.字面量方式
`var obj = {
name:'zaker',
run:function(){
console.log("跑")
}
}`
2.使用Object()创建
`var obj = new Object()
obj.name = "zaker"
obj.run = function(){
console.log("跑")
}`
3.使用工厂模式创建(不推荐,会造成额外开销)
`function createPerson(p_name, p_run){
var obj = new Object()
obj.name = p_name
obj.run = p_run
return obj
}`
createPerson('zaker', ()=>{console.log("跑")})
4.使用构造函数(内存开销依然不小)
5.使用原型创建(直接将对象定义在原型上)
3.对象的属性
4.this
全局环境中出现this——>window
方法中出现this——>方法拥有者
构造函数出现this——>函数在调用时创建的对象
call()和apply():更改this所指向的对象
两者区别:前者使用逗号分隔参数,后者是数组传入。
5.闭包
简单应用:
`function fun(){
name:'zaker';
return function fun2(){console.log(name)};
}
fun()();
`