JS中的继承—构造函数与实例

本文探讨了JavaScript中的实例和构造函数。首先解释了实例作为对象描述的概念,然后详细阐述了构造函数,包括它的定义、与普通函数的区别,以及在实例化过程中的具体步骤,如创建新对象、原型指向及返回实例对象。最后,通过实例分析帮助读者深入理解new操作符的工作原理。

实例

  1. 概念
    实例可以当作一个对象的描述
const person = new Object()
// person 是 Object的实例
  1. 实例与对象的关系
    实例都是对象,而对象不都是实例
const chinese = {
    area: '亚洲',
    color: '黄',
    // ...
}
console.log( chinese.__proto__.constructor === Object ) // true
// chinese 是 Object 的实例
// Object 不都是 chinese

构造函数

主要解答三个问题:

  1. 什么是构造函数
  2. 构造函数与普通函数有什么不同
  3. 实例化函数时都发生了什么
1.什么是构造函数

所有普通函数都可以当作构造函数。

2.构造函数与普通函数有什么不同
  1. 使用new关键字进行调用
  2. 命名一般以大写开头
  3. 内部使用this来创建属性
  4. 构造函数默认返回一个新对象,并具有构造函数定义的属性和方法
3.实例化函数时都发生了什么

我们先看一个实例化例子,再进行分析

function Person (){
    this.name = 'huhuf5'
    this.sex = '男'
} 
const person = new Person()

// 分析
person.name === 'huhuf5'
person.sex === '男'

person.__proto__ === Person.prototype

结合原型链知识以及构造函数的特点我们知道:

  1. 创建了一个新的对象
  2. 将原型指向构造函数
  3. 返回一个实例对象

根据特点我们可以自己来实现一个new

function newFn(){
    let obj = new Object() // 创建一个新的对象
    obj.__proto__ = Person.prototype  // 指向构造函数原型
    let result = Person.apply(obj , arguments) // 绑定this,执行构造函数
    return typeof result === 'object' ? result : obj  // 总是返回一个对象
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值