函数的作用是帮我们编写更少的代码,并阻止我们重复工作。
函数是JavaScript中的主要概念之一,同时函数也是任何编程语言的基本特性。但和一些基于类的语言如Java或PHP不同的是,ES6之前的JavaScript并不遵循基于类的结构,而是遵循基于原型的继承,这很容易会让人感到混乱。
在JavaScript中,函数有一个额外的工作要执行:创建对象。正如我们所知道的那样,JavaScript基于原型的继承,但我们依然需要创建一个对象,这样我们才能够将相关的逻辑组合到一起。
那么我们如何从函数中创建对象呢?使用关键字new。为此,我们需要创建一个被称作构造函数的东西。
函数在本质上是一个对象,它具有两个特殊的属性:名称和代码。如果它被命名,那么名称将存储在name属性中,而我们要执行的代码将存储在代码中。当我们调用函数时,JavaScript将会在代码属性里执行代码段。
写一个简单的函数看看控制台里打印出了什么。
在控制台里,Window对象中的example有一个name属性,属性名称为"example"。当我们用new关键字调用这个函数之前,这个函数只保持为普通函数。当使用new关键字调用时,我们调用的是prototype.constructor方法,该方法可以从函数中实例化一个新的对象。
由于函数也是对象的一种,所以我们也可以在example函数中附加一些属性和方法。方法存储在函数的prototype属性中,而不是以单个对象的方式存在的,这些方法对于此函数创建的所有实例对象都是通用的。这是为了将所有方法保存在同一个位置,有助于减少对象的内存占用。
示例代码如下:
let ep = function example(name, age){
this.name = name;
this.age = age;
};
ep.prototype.sayHi = function(){
console.log(`my name is ${this.name}, my age is ${this.age}`);
};
let ep1 = new ep(1,2);
console.log(ep1);
查看控制台中输出: