全面拥抱面向对象
今天复习了函数,他还有一个高大上的名字全面拥抱面向对象,估计从今天开始之后,就要天天面向对象了!
全面拥抱面向对象(Object Oriented Programming)
函数:当函数执行的时候,会形成一个全新的执行上下文(函数体中的代码会在这个上下文中运行),代码运行中,会把所有创建的变量存储到当前上下文的AO(变量对象)中,这些变量是‘私有变量’:除当前上下文中可以使用这些变量的值,上下文以外的环境不能直接使用私有变量的值
如果当前上下文中的一些私有信息,则需要函数提供对应的出口,把信息提供给外面使用,而这个出口在js函数中称为return
return后面放的一定是值:此处相当于把私有变量的值返回给外面使用
创建一个变量,用来接收函数执行完返回的值:return后面的值
函数名:函数本身
函数名():让函数执行,代表的是函数的返回值
如果函数中没有写return,默认的返回值是undefined
形参:用来存储执行函数时,传递进来的信息,形参是变量
实参:函数执行的时候,传递进来的值会赋值给形参变量=>传递的具体值在JS函数中称为实参,‘实参就是具体传递的值’
形参是创建函数时候设定的变量,实参是执行函数时候给形参传递的具体值
‘类’是对‘对象’的一种细分和公共部分的封装,而类别中派生出来的具体事务叫做类的‘实例’,实例既有属于自己私有的东西,也有继承各个类别中的公有信息,面向对象编程其实就是掌握‘对象’,‘类’,‘实例’之间的关系和知识,例如:类的封装继承和多态等信息
functiong Createperson(name,age){
this.name=name;
}
let person1=new Createperson('heran',12);
new CreatePerson()执行和普通函数执行的联系:
1、new这种执行方式叫做“构造函数执行模式”,此时的CreatePerson不仅仅是一个函数名,被称为“类”,而返回的结果(赋值给person1的)是一个对象,我们称之为“实例”,而函数体中出现的this都是这个实例
构造函数(Constructor):基于构造函数创建基本值、自定义类的创建、instancedof
构造函数:
创建自定义类和对应实例,构造函数就是创建自定义类的
new 是js的关键字,可以构建类和实例,有特殊的意义;在普通函数执行之前加上new,此时函数就成了构造函数运行模式
类:函数数据类型
实例:对象数据类型
自定义类是拿函数创建的,而且是在普通函数的基础之上创建的
构造函数的返回值就是当前类的实例
形成私有作用域
形参赋值
变量提升
默认生成一个空对象,(这个对象是当前类的一个新实例)让当前作用的this指向这个空对象
代码执行
默认把当前作用域的this return出去
作用域是否销毁
实例都是对象数据类型的
构造函数里的this就是当前类的实例
普通函数和构造函数区别:
普通函数:
1、运行商的区别:
形成私有作用域->形参赋值-变量提升-代码执行-作用域是否销毁
2、执行上的区别:
普通函数执行必须有小括号
构造函数执行:
形成私有作用域-形成赋值-变量提升-默认生成空对象-当当前作用域的this指向这个空对象-代码执行-默认把当前this return出去-作用域是否销毁
构造函数执行之前必须加上new,如果没有实参可以省略小括号;如果手动return一个基本知识,不会影响构造函数的返回值;如果return引用值,那构造函数的返回值就会发生变化(此时的返回值已经不是当前的实例了),
构造函数执行,因为也具备普通函数执行的的特点
1、和实例有关系的操作一定是this.xxx=xxx,因为this是当前类创造出来的实例
2、私有变量和实例没有必然的联系
创建实例的方式:
字面量创建方式(也是Number类的实例,也可以调取内置的公有方法)
- 点赞
- 收藏
- 关注作者
评论(0)