javascript prototype 原型链

yizhihongxing

JavaScript 中的每一个对象都有一个指向另一个对象的内部链接,这个链接称为原型(prototype)链。如果一个对象需要一个属性或者方法,但是它本身并没有这个属性或方法,它会沿着自身的原型链向上查找,直到找到该属性或方法为止。

原型链的概念

每一个 JavaScript 对象在创建时,都会与一个 "原型" 关联起来,这个原型可以是其他的对象的实例,这样,原型对象就会形成一个 "链" 的概念,在查找某个方法或属性时,如果在当前对象上找不到,就会沿着这个原型链一直向上查找,直到找到为止,这就是 "原型链" 的概念。

原型链的创建方式

每一个函数都有一个 prototype 属性,这个属性是一个对象,它的属性和方法会被构造函数的实例继承。如果这些实例都需要初始成员,但又不能使用构造函数中的 this,可以为其添加 prototype 属性。

function Person(name, age){
    this.name = name;
    this.age = age;
}
Person.prototype.getName = function() {
    return this.name;
}
Person.prototype.getAge = function() {
    return this.age;
}

原型链的示例

以下是使用原型链的一个示例,我们定义了一个 Person 构造函数,它有一个属性和两个方法。我们可以用 new 关键字创建一个实例,然后使用实例对象直接调用这些方法。

function Person(name, age) {
    this.name = name;
    this.age = age;
}
Person.prototype.getName = function() {
    return this.name;
}
Person.prototype.getAge = function() {
    return this.age;
}
const person = new Person('张三', 20);
console.log(person.getName()); // 张三
console.log(person.getAge()); // 20

另一个示例是在一个类的基础上创建一个子类,在子类的构造函数中调用父类的构造函数,并继承父类的原型方法。

function Person(name) {
    this.name = name;
}
Person.prototype.getName = function() {
    return this.name;
}
function Student(name, id) {
    Person.call(this, name);
    this.id = id;
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
Student.prototype.getId = function() {
    return this.id;
};
const student = new Student('李四', 's001');
console.log(student.getName()); // 李四,从 Person 原型中继承下来的方法
console.log(student.getId()); // s001,Student 原型中的方法

Student.prototype = Object.create(Person.prototype); 这一行中,我们使用 Object.create 方法创建一个拥有 Person.prototype 属性的新对象,并将这个对象赋值给 Student.prototype,这样,Student 便继承了 Person,并且获取了 Person.prototype 上的所有属性和方法,即实现了基于原型的继承。

以上就是原型链的一个详细攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript prototype 原型链 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript SetInterval与setTimeout使用方法详解

    JavaScript SetInterval与setTimeout使用方法详解 SetInterval 语法 setInterval(function, delay, param1, param2, …) 参数 function:必需。要调用的函数或代码串。 delay:必需。该函数调用之间的时间间隔(以毫秒计)。 param1、param2和更多参数:…

    JavaScript 2023年6月10日
    00
  • Javascript之BOM(window对象)详解

    Javascript之BOM(window对象)详解 什么是BOM 在Web页面中,JavaScript可以调用浏览器提供的API,这些API就组成了BOM。BOM(浏览器对象模型)提供了一组对象,并且每个对象都有相关的属性和方法,可以操作浏览器窗口。BOM除了提供了访问浏览器接口的对象外,还提供了访问用户代理信息的导航对象。其中,window对象是BOM最…

    JavaScript 2023年6月11日
    00
  • Prototype使用指南之ajax

    Prototype使用指南之ajax Prototype是一款优秀的JavaScript框架,提供了一系列易用、高效的API,其中最为常用的之一便是ajax模块。ajax模块让我们可以通过JavaScript发起异步HTTP请求,从而有效地提升前端开发效率和用户体验。在本篇文章中,我们将详细讲解如何使用Prototype的ajax模块进行前端开发。 发起一个…

    JavaScript 2023年6月11日
    00
  • Vue集成lodop插件实现打印功能

    下面是详细讲解Vue集成lodop插件实现打印功能的攻略。 1. 什么是Lodop插件 Lodop插件是一款功能强大的打印插件,它支持各种打印机类型,可以实现各种打印效果,包括纸张大小、字体颜色、背景颜色等。 2. 使用Lodop插件的前提 在使用Lodop插件之前,需要先下载插件,并引入到Vue项目中。 下面是引入Lodop插件的示例代码: <!–…

    JavaScript 2023年6月11日
    00
  • js跳转页面方法总结

    JS跳转页面方法总结 在Web开发中,JS跳转页面是非常常见的操作。下面我们来总结几种JS跳转页面的方法。 方法一:使用JavaScript中的location对象 可以通过JavaScript提供的location对象来实现跳转页面的功能。使用方法如下: // 跳转到指定URL location.href = "http://www.exampl…

    JavaScript 2023年6月11日
    00
  • 关于JavaScript的gzip静态压缩方法

    关于JavaScript的gzip静态压缩方法,下面是详细攻略: 1. 什么是gzip压缩 gzip是一种流行的数据压缩算法,用于减少网络流量并加快Web页面的加载速度。在JavaScript中,gzip可以压缩脚本文件,减少文件大小,加速页面加载。 2. 如何进行gzip压缩 2.1 node.js的gzip压缩方法 Node.js是一个流行的JavaSc…

    JavaScript 2023年5月27日
    00
  • Javascript入门学习第八篇 js dom节点属性说明第1/2页

    让我来为你讲解“Javascript入门学习第八篇 js dom节点属性说明第1/2页”的完整攻略。 理解 DOM 节点属性 DOM 节点是网页中的 HTML 元素,如文本、图像和按钮等。每个节点都有一些属性,这些属性用来指定节点的特征和状态。理解这些节点属性对于 Javascript 开发人员来说非常必要。 常见的 DOM 节点属性 常见的 DOM 节点属…

    JavaScript 2023年5月18日
    00
  • Javascript实现关闭广告效果

    首先我们需要明确一下什么是广告,广告通常是指网页中不需要的内容,往往我们希望将其从页面中移除,这就是所谓的关闭广告。 实现关闭广告效果的方法很多,目前比较常用的是Javascript脚本。Javascript不仅可以用来强制隐藏广告,还可以用来防止广告显示在首屏内容之前。 下面介绍几种常用的Javascript实现关闭广告的方法及其示例说明: 一、使用广告屏…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部