十八、构造函数
1.构造函数是什么?
构造函数:是一种特殊的函数,用于初始化对象,即为对象成员赋初始值。
- 常将对象中一些相同的属性和方法抽象出来封装到这个函数里。
2.为什么需要构造函数?
因为每个对象中的属性值都有差异,如:每个人不同的姓名、年龄
而每次创新不同对象,都需要重复定义大体结构相同的对象,太费时间。因此就采用函数的方式重复这些代码,而该函数就是构造函数。
3.创建构造函数
(1)构造函数的函数名首字母开头大写
(2)构造函数不需要return即可返回结果
(3)调用构造函数返回的是一个对象
(4)方法内每条语句结尾都需要加分号
(5)属性和方法前必须+this,表示为构造方法中的属性和方法
//1.声明并赋值构造函数 function 构造函数名(形参1,形参2){ this.属性 = 值; this.方法 =function(对象中方法的形参1,对象中方法的形参2){ //方法体 }; }
- 示例:
function Person(name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.sayHi = function(hua){ alert(hua); }; }
5.调用构造函数
- 调用构造函数生成的对象名.属性名;
- 调用构造函数生成的对象名.方法名(传入对象方法的实参1,传入对象方法的实参2);
//2.调用函数将结果返回给一个变量,无需return就可返回 //返回的是对象类型哦! var 变量名 = new 构造函数名(实参1,实参2); 生成的对象变量名.属性名; 生成的对象变量名.方法名(传参数);
示例:
function Person(name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.sayHi = function(hua){ alert(hua); } } var res = new Person(); res.sayHi('你好哇!');
6.示例
//1.声明并创建构造函数 function Star(name,age,sex){ //①为属性赋值 this.name = name; this.age = age; this.sex =sex; //②定义构造方法 this.sing = function(sang){ alert(sang); } } //2.调用构造函数 var ldh = new Star('刘德华',18,'男'); alert(ldh.name);//输出ldh对象中的name属性 ldh.sing(‘忘情水’)//调用ldh对象中的sing方法,同时传入参数sang='忘情水'
十九、构造函数和对象的区别
1️⃣构造函数--抽象了对象的公共部分,封装到了函数中,表示泛指的类;如:明星,宠物
--同java的类
2️⃣对象--表示某一个具体人/物,通过new关键字创建对象,称为实例化;如:刘德华,田园猫
--同java对象
1.实例化是什么?
通过new关键字创建对象,就叫实例化。
注意js中构造函数等同于java的类
2.new关键字
**new 构造函数 ( 实参 )**的执行过程:
①先在内存中创建了一个空的对象
②而this就会指向刚才的创建的空对象
③执行构造函数里面的代码,给空对象添加属性和方法
④返回该对象