javascript中的prototype;javascript中的原型链

文章目录

  • 深入理解JavaScript原型链
      1. 什么是原型链?
      1. 原型链的结构
      1. 如何访问原型链?
      1. 示例演示原型链
      1. 原型链与继承
      1. 实际应用场景

深入理解JavaScript原型链

1. 什么是原型链?

在JavaScript中,每个对象都有一个原型(prototype),并且原型可以有自己的原型,形成了一个链式结构,被称为原型链。这个机制是JavaScript中实现继承和对象属性查找的基础。

2. 原型链的结构

原型链是由对象之间的连接构成的。每个对象都有一个指向它原型的链接,这个链接可以追溯到顶层的对象,形成一个链条。当你尝试访问一个对象的属性时,JavaScript引擎会沿着这个链条去查找属性。

3. 如何访问原型链?

当我们访问对象的属性或方法时,JavaScript引擎会按照以下顺序查找:

在对象本身查找

如果找不到,就查找对象的原型

如果还找不到,就继续查找原型的原型,直到找到或者到达原型链的顶端

4. 示例演示原型链

让我们通过一个更详细的例子来演示原型链的工作:

javascript 复制代码
function Person(name) {
  this.name = name;
}

Person.prototype.sayHello = function() {
  console.log('Hello, my name is ' + this.name);
};

let person = new Person('Alice');
person.sayHello(); // 输出 "Hello, my name is Alice"

在这个例子中,person对象通过原型链继承了Person构造函数的sayHello方法。

5. 原型链与继承

原型链是JavaScript中实现继承的一种方式。通过设置子类的原型为父类的实例,子类可以继承父类的属性和方法。这样的继承方式更加灵活,并且有助于代码的组织和复用。

javascript 复制代码
function Student(name, grade) {
  Person.call(this, name);
  this.grade = grade;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

Student.prototype.sayGrade = function() {
  console.log('I am in grade ' + this.grade);
};

let student = new Student('Bob', 10);
student.sayHello(); // 输出 "Hello, my name is Bob"
student.sayGrade(); // 输出 "I am in grade 10"

6. 实际应用场景

原型链不仅仅用于继承,还在其他方面有实际应用。例如,原型链的特性使得我们能够动态地扩展和修改对象的行为,从而实现一些有趣的设计模式和编程技巧。

相关推荐
总要学点什么9 分钟前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
xiaoye-duck31 分钟前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
Agent世界2 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
Funlang2 小时前
龙芯上的 Fun:从跑起来到机器码
开发语言·龙芯
总要学点什么2 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
程序员大阳2 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
旖旎夜光2 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
神膘护体小月半2 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css
ShineWinsu3 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
程序员大阳3 小时前
副队长ES6+教程(2)--let 与 const
前端·javascript·es6·const·let·var