JS中函数与对象之间的关系

函数的作用是帮我们编写更少的代码,并阻止我们重复工作。

函数是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);

查看控制台中输出:

输出结果

你可能感兴趣的:(JS中函数与对象之间的关系)