JavaScript中工厂函数和构造函数是什么

  介绍

小编给大家分享一下JavaScript中工厂函数和构造函数是什么,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

当谈到JavaScript语言与其他编程语言相比时,你可能会听到一些令人困惑东西,其中之一是工厂函数和构造函数。

工厂函数

所谓<强>工厂函数强,就是指这些内建函数都是类对象,当你调用他们时,实际上是创建了一个类实例”。意思就是当我调用这个函数,实际上是先利用类创建了一个对象,然后返回这个对象。由于JavaScript本身不是严格的面向对象的语言(不包含类),实际上来说,JavaScript并没有严格的“工厂函数”,但是在JavaScript中,我们能利用函数模拟类。来看下面一个例子:

function 人(firstName、lastName的不同之处是,年龄),{   const 才能;person =, {};   person.firstName 才能=,firstName;   person.lastName 才能=,姓;   时间=person.age 才能;年龄;   return 才能;人;   }

上述代码,创建一个新对象,并将传递参数作为属性附加到该对象上并返回新对象。这是一个简单的JavaScript工厂函数。

<强>实际上工厂函数也很好理解了:

<李>

它是一个函数。

<李>

它用来创建对象。

<李>

它像工厂一样,“生产”出来的函数都是“标准件”(拥有同样的属性)

构造函数

不同于其它的主流编程语言,JavaScript的构造函数并不是作为类的一个特定方法存在的;当任意一个普通函数用于创建一类对象时,它就被称作构造函数,或构造器。一个函数要作为一个真正意义上的构造函数,需要满足下列条件:

<李>

在函数内部对新对象(这)的属性进行设置,通常是添加属性和方法。

<李>

构造函数可以包含返回语句(不推荐),但返回值必须是这个,或者其它非对象类型的值。

function 人(firstName、lastName的不同之处是,年龄),{   this.firstName 才能=,firstName;   this.lastName 才能=,姓;   时间=this.age 才能;年龄;   }

使用新关键字创建对象

正如上面所说的,我们可以使用<代码> 来新类或者对象,那么你可能会有以下几个问题:

<李>

我们可以在工厂函数中使用<代码> 新关键字吗?

<李>

如果我们在工厂和构造函数中使用<代码> 新关键字会发生什么

<李>

如果在使用构造函数创建对象实例时不使用新关键字会发生什么

好的,试着找出以上问题的答案之前,我们先做一个小练习来理解这里面发生了什么。

使用<代码> 新关键字同时使用工厂和构造函数创建两个对象,接着在控制台打印这两个对象。

<强>使用工厂函数
function 人(firstName、lastName的不同之处是,年龄){   const 才能;person =, {}   person.firstName 才能=,firstName;   person.lastName 才能=,姓;   时间=person.age 才能;年龄;   return 才能;人;   }      const  mike =, new 人(& # 39;迈克# 39;,,& # 39;大# 39;,,23)。

 JavaScript中工厂函数和构造函数是什么

正如我们在上述所看到的,这里的<代码> __proto__> 对象的指向原型对象,让我们做简单的<代码>===>

 JavaScript中工厂函数和构造函数是什么

嗯,有趣的是,它指向<代码>对象。>

理解JavaScript的原型

理解原型之前,需要记住以下几点知识:

<李>

所有的引用类型(数组,对象,函数),都具有对象特性,即可自由扩展属性(零除外)

<李>

所有的引用类型(数组,对象,函数),都有一个__proto__属性,属性值是一个普通的对象

<李>

所有的函数,都有一个原型属性,属性值也是一个普通的对象

<李>

所有的引用类型(数组,对象,函数),__proto__属性值指向它的构造函数的原型属性值

JavaScript中工厂函数和构造函数是什么