一对象
- 什么是对象?
1.多个数据的封装体
2.用来保存多个数据的容器
3.一个对象代表现实中的一个事务
let obj={
name:'lily',
age:20
}
- 为什么要使用对象?
1.统一管理多个数据 - 对象的组成?
1.属性:属性名和属性值
2.方法:一种特殊的属性,属性值是方法
let obj={
name:'lily', //属性
age:20, //属性
getname:function(){ //特殊属性:方法
return this.name
},
setName:function(name){//特殊属性:方法
this.name=name
}
- 如何访问对象内部数据?
1…(点)属性名
2.[“属性名”]
let obj={
name:'lily',
age:20
}
console.log(obj.name) // lily
let name='name'
console.log(obj[name]) // lily
二函数
什么是函数?
- 实现特定功能的n条语句封装体。
- 只有函数可以执行。
function getName(){
console.log('函数体执行语句')
}
getName() //函数体执行语句
为什么要用函数?
- 提高代码复用
- 便于阅读交流
function getName(name){
console.log(name)
}
// 只要每次调用方法,就可以执行函数体内逻辑
getName('lily') //lily
getName('coco') //coco
如何定义函数?
- 函数表达式
let getName=function(){}
getName()
- 函数声明的方式
function getName(){}
getName()
如何执行调用函数?
- 直接调用
let getName=function(){
console.log(111)
}
// 直接调用
getName() //111
- 通过对象调用
let obj ={
name:'lily',
getName:function(){
return this.name
}
}
// 通过对象调用
obj.getName() //lily
- new调用
new getName()
- 让函数成为对象的方法进行调用
let obj={
name:'lily'
}
function getname(){
console.log(this.name)
}
getname.call(obj) // this
三回调函数
什么是回调函数?
特点:
- 我们自己定义的
- 我们没有调用
- 但是执行了
(function (){
console.log(111) // 111
})()
常见的回调函数
- dom事件回调函数
- 定时器
- ajax请求回调函数
- 生命周期回调函数
匿名函数自调用
作用
隐藏实现
不会污染外部命名空间(全局环境)
用它来编码js模块
函数中的this
this是什么
任何函数本质上都是通过某一个对象调用的,如果没有指定就是window
所以函数内部都有一个变量this
它的值是调用函数的当前对象
如何确定this值
如下例子
test():window
p.test():p
new test();创建新对象
p.call(obj):obj
function per(name){
console.log(1,this)
this.getName=function(){
console.log(2,this)
return this.name
}
this.setNmae=function(name){
console.log(3,this)
this.name=name
}
}
per('lily')//1,window
let p=new per('lily') // 1,window
let obj={}
p.setNmae.call(obj,'lily')//3,obj
let test=p.setNmae
test()//3,window