js构造函数

103 阅读2分钟

为什么需要构造函数

因为我们一次创建一个对象,里面有很多属性和方法是相同的,我们只能复制

因此可以利用函数的方法,重复这些相同的代码,我们将这个函数称为构造函数

又因为这个函数不一样,里面封装的不是普通代码,而是对象

构造函数就是将对象里相同的属性和方法抽象出来封装到函数里

语法格式

function 构造函数名( ){

this.属性= 值;

this.方法= function( ){ }

}

new 构造函数名( );

function Star(unname, age, sex) {             this.name = unname;             this.age = age;             this.sex = sex;         }         var ldh = new Star("柳大华", 18, "男");//调用函数返回的是一个对象         console.log(ldh.name);

1.构造函数首字母大写

2.不需要return 就可以返回结果

3.调用必须使用new

4.只要调用函数就会返回(创建)一个对象

5.属性和方法前都必须加this

创建方法和普通函数的区别

在于调用方法不同

普通函数是直接调用,而构造函数使用new 关键字调用 返回的是一个对象

image.png

构造函数的执行流程

new 在执行时做的四件事

1.立即创建一个新的空对象 per

2.this指向这个空对象,在构造函数中可以使用this来引用新建的对象 this.name=per.name 构造函数里的this就是新建的对象

this.name=name表示将name值添加到新建的per对象里

3.逐行执行函数中的代码,给这个空对象添加属性和方法

4.将新的对象作为返回值返回

image.png

在Person构造函数中,为每一个对象都添加了一个sayName方法

目前我们的方法是在构适函放内部创建的,

也就是构造函数每执行一次就会创建一个新的sayName方法

也是所有实例的sayName都是唯一的

这样就导致了构造函数执行一次就会创建一个新的方法,

执行1000次就会创建10000个新的方法,而且都是一模一样的

这是完全没有必里,占内存,完全可以使所有的对象共享同一个方法

解决方法:

image.png

image.png 开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15天,点击查看活动详情