js 构造函数

什么是构造函数

1.在 JavaScript 中,用 new 关键字来调用的函数,称为构造函数。
2.构造函数首字母大写(规范),通过new创建的是引用类型

为什么要是用构造函数

1.在使用对象字面量创建一系列同一类型的对象时,这些对象可能具有一些相似的特征(属性)和行为(方法),此时会产生很多重复的代码,而使用构造函数就可以实现代码的复用

构造函数的执行过程

a、当以 new 关键字调用时,会创建一个新的内存空间,标记为 一个的实例
b、 函数体内部的 this 指向该内存
c、执行函数体内的代码
d、默认返回 this 。
若是有return,return后面是对象(或数组),则最终会返回这个对象,只有是对象有效,若不是还是返回new过程中形成的对象

ES6中class与构造函数的关系

class 为 构造函数的语法糖,即 class 的本质是 构造函数。class的继承 extends 本质 为构造函数的原型链的继承。

例如:

类的写法

class Person {  //定义一个名字为Person的类
  constructor(name, age) { //constructor是一个构造方法,用来接收参数
    this.name = name;  //this代表实例对象
    this.age = age;
  }
  say() {  //这是一个类的方法,注意千万不要加上function
    return this.name + this.age
  }
}
var obj = new Person('老铁', 18);
console.log(obj.say());

构造函数的写法

function Person(name, age) {   //构造函数和实例化构造名相同且大写(非强制,但这么写有助于区分构造函数和普通函数)
  if (!(this instanceof Person)) { //避免使用者不小心讲Person当作普通函数执行
    throw new Error("请使用 new Person"); //仿ES6 class 中的写法
        }
  this.name = name;
  this.age = age;
}
Person.prototype.say = function () {
  return this.name + this.age
}
var obj = new Person('老铁',18);   //通过构造函数创建对象,必须使用new运算符
console.log(obj.say());

总结:通过class定义的类 和通过构造函数定义的类 二者本质相同。并且在js执行时,会将第一种转会为第二种执行。所以 ES6 class的写法实质就是构造函数。
参考链接:参考链接
 参考链接

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值