JavaScript中什么是构造函数?

时间:2022-12-16 14:39:36

今天被刚来的实习生问及一个普遍说不清道不明的问题,什么是构造函数?经过一番思索,决定从JavaScript 的函数本质开始说起。(以下简称js)

要想搞明白构造函数,就要先弄懂什么是函数?以及js中有哪几种函数的创建形式。

什么是函数?

函数简单的说就是重复执行的代码块;按照JavaScript权威指南(第六版)(作者是David Flanagan)

(注:这本书还是很适合初学者看的,提供一个下载链接:              )

书中的说法:函数是这样的一段JavaScript 代码,它只定义一次,但可能被执行或调用任意次。

         Js中有哪几种创建形式呢?

         函数使用function 关键字来定义,其后跟随,函数名称标识符、 一对圆括号、一对花括号。 JavaScript中有三种创建形式,分别是:

①   声明式

function fn( ){ };   这种定义的方式,无论在哪儿定义,别处都可以调用 ;

②   函数的字面量或叫直接量或称表达式

var fn=function () { }; 此时函数作为表达式存在,调用只能在定义的后面; 

解释一下表达式:凡是将数据和运算符等联系起来有值得式子就是表达式。

采用new  Function 方法; 

③  以new Function 的形式

 varfn = new Function (arg1 , arg2 ,arg3 ,…, argN , body  )

解释:

         Function构造函数所有的参数都是字符串类型。除了最后一个参数, 其余的参数都作为生成函数的参数即形参。这里可以没有参数。最后一个参数, 表示的是要创建函数的函数体。

 

另外,js 中任意函数都是Function 的实例。

有了以上的铺垫就可以来说明什么是构造函数了:

构造:它是设计,组合。将没有的东西先概念实现,比如建筑图纸

构造函数:首先,它是函数,并且任何的函数都可以作为构造函数存在,它的本质是初始化对象。构造函数都是和new  关键词一起使用的。 new就是在创建对象,从无到有,构造函数就是在为初始化的对象添加属性和方法( 成员 ) 好比:

this.name = xiaoming;

                            this.age= 10;

                            this.gender= '男';

其实刚才的创建函数的第三种方法就是利用构造函数的方式实现的

如: var obj = new Person( “xiaoming ”, 10 ,”男” )  ;

有了构造函数,那构造对象就成以下四步了:

                             1, new 申请内存, 创建对象

                             2, 调用构造函数, 构造函数有一个隐式参数, 即 this

                             3, 刚创建出来的对象的引用 赋值给 this, 由函数处理.

                             4, 在构造函数中利用 this.成员 = 值 来给对象添加成员 .

以一个典型的案例结尾 :

Function  Person( name,age,gender ) {

        

              this.name = name;

this.age=age;

this.gender = gender;

this.sayHello = function () {

                       console.log('Hello '+ name );

              };

}

             

var P1= new Person('jim',10,‘男’);

var P2= new Person(tom,20,‘女);

 

 

                                                                                                                                                                     by  Turbo  beijing