JS中的原型与原型链

  1. 基本概念
  • 原型(Prototype) :每个对象都有一个内部属性 [[Prototype]],通常通过 __proto__ 访问(非标准,但广泛支持)。

  • 原型链(Prototype Chain) :对象通过原型链查找属性和方法。如果对象本身没有某个属性或方法,它会沿着原型链向上查找,直到找到或到达原型链的顶端(null)。


2. 原型的作用

  • 实现继承:通过原型链,对象可以继承其原型对象的属性和方法。

  • 共享属性和方法:原型允许多个对象共享相同的属性和方法,从而节省内

对象中的原型

每个对象都有一个内部属性 [[Prototype]],通常通过 __proto__ 访问(非标准,但广泛支持)

我们现在创建按一个User函数来理解原型原型的概念

javascript 复制代码
function User(name, age) {
    this.name = name;
    this.age = age;
    this.sayHello = function() {
        console.log('我是' + this.name)
    }
}

const user1 = new User('小王', 18)
user1.sayHello() // 我是小王
const user2 = new User('小高', 20)
user1.sayHello() // 我是小高

这里面创建了一个User构造函数,每个对象里面都有一个sayHello方法,sayHello 方法是完全一样的,没必要为每个用户单独生成一个; 所以我们可以改造一下,把方法挂载到User的原型上,当然也可以增加一个性别的属性,假设他们的性别都是一样的

javascript 复制代码
function User(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype.sayHello = function() {
    console.log('我是', this.name + '我的性别是' + this.sex)
}
User.prototype.sex = '男'

const user1 = new User('小王', 18)
user1.sayHello() // 我是小王
const user2 = new User('小高', 20)
user1.sayHello() // 我是小高

这个就是原型用来共享数据!

什么是原型链?

重要概念:所有的对象都是通过new创建的,{} 和 [] 则是语法糖, 看下面的代码👇

javascript 复制代码
var u2 = { // 对象 u2 通过 new Object 创建
  firstName: '莫',
  lastName: '妮卡'
}
// 等效于
var u2 = new Object(); 
u2.firstName = '莫';
u2.lastName = '妮卡';

上面的代码原型链如下👇

所有的对象都是通过Object创建的 ,所以当前两张图可以合并

上面的图片中从 u1->user原型->Object原型; 这就被称为原型链!

Function 中的原型链

javascript 复制代码
function User(name) {
    this.name = name
}
const user1 = new User('小王')

上面的代码原型链如下

完整的图例如下👇

相关推荐
薛先生_09915 分钟前
js学习语法第一天
开发语言·javascript·学习
苦瓜小生36 分钟前
【前端】|【js手撕】经典高频面试题:手写实现function.call、apply、bind
java·前端·javascript
报错小能手37 分钟前
深入理解 Linux 虚拟内存管理
开发语言·操作系统
和沐阳学逆向1 小时前
我现在怎么用 CC Switch 管中转站,顺手拿 Codex 举个例子
开发语言·javascript·ecmascript
小仙女的小稀罕1 小时前
听不清重要会议录音急疯?这款常见AI工具听脑AI精准转译
开发语言·人工智能·python
书到用时方恨少!1 小时前
Python random 模块使用指南:从入门到精通
开发语言·python
客卿1231 小时前
牛客刷题--找数字-- 字符串检测-字符串 双指针
java·开发语言
Amour恋空2 小时前
Java多线程
java·开发语言·python
小陈工2 小时前
2026年3月28日技术资讯洞察:5G-A边缘计算落地、低延迟AI推理革命与工业智造新范式
开发语言·人工智能·后端·python·5g·安全·边缘计算
第二只羽毛3 小时前
C++ 高并发内存池1
大数据·开发语言·c++·开源