javascript prototype 原型链

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 Window及document对象详细整理

    JavaScript Window及Document对象详细整理 在 JavaScript 中,Window 和 Document 是两个常用的对象,它们分别代表浏览器窗口和文档模型。本文将详细讲解它们的各种属性和方法。 Window 对象 Window 对象是 JavaScript 代码的全局对象,即在浏览器中,它代表整个浏览器窗口。在没有指定父窗口的情况…

    JavaScript 2023年5月27日
    00
  • Python、Javascript中的闭包比较

    下面我将详细讲解Python和JavaScript中的闭包比较。 什么是闭包? 在JavaScript和Python中,闭包是指可以访问外部函数作用域的函数。简单地说,内部函数可以访问外部函数中的变量。这意味着,即使外部函数已经返回,内部函数也可以访问并操作它们。 Python中的闭包 下面我们来看一个Python中的闭包示例: def outer_func…

    JavaScript 2023年6月10日
    00
  • Z-Blog中用到的js代码

    当我们使用Z-Blog来构建网站时,会用到一些js代码。这些js代码可以增强网站的用户体验和交互效果。以下是对Z-Blog中用到的js代码的详细讲解: 一、加载js代码的方法 在Z-Blog中,我们可以使用以下两种方法来加载js代码: 在\zb_users\theme\主题名\template\header.php中使用如下代码引入js文件: <scr…

    JavaScript 2023年6月11日
    00
  • js实现非常简单的焦点图切换特效实例

    下面我将详细讲解如何实现JS实现非常简单的焦点图切换特效。 1. 理解需求 在动手编写代码之前,我们需要先清楚自己要做什么。根据题目描述,我们需要实现一个简单的焦点图切换特效,其中最基本的要求就是能够自动轮播图片。除此之外,还可以设置左右切换按钮、底部焦点导航等功能,以便用户手动切换图片。 2. HTML结构 在开始编写JS代码之前,我们需要先构建一个基本的…

    JavaScript 2023年6月11日
    00
  • BOM之navigator对象和用户代理检测

    BOM指的是浏览器对象模型(Browser Object Model),是由浏览器厂商提供的一组API接口,用于JavaScript与浏览器交互,包括DOM、window对象、navigator对象等。其中,navigator对象用于获取有关浏览器的信息,用户代理检测可以通过这个对象获取当前浏览器的信息。 navigator对象 navigator对象提供了…

    JavaScript 2023年6月10日
    00
  • js form 验证函数 当前比较流行的错误提示

    当今大部分网站都需要对用户输入的表单数据进行验证,以确保数据的有效性和安全性。而JavaScript是在客户端进行表单验证的一种流行方式,可以让用户在提交表单之前对输入数据进行验证,从而保证数据的可靠性。 比较流行的错误提示是在表单下方显示错误信息的方式,并且应该以红色字体突出显示。下面是实现一个基本的JavaScript表单验证函数的步骤和代码示例: 步骤…

    JavaScript 2023年6月10日
    00
  • javascript 时间显示代码集合(Date对象)

    JavaScript 时间显示代码集合(Date 对象) JavaScript 中的 Date 对象可以非常方便地进行时间处理和日期显示。本文将详细讲解 Date 对象的使用方法和常见示例。 获取当前时间 可以使用如下代码获取当前时间: var now = new Date(); 此时 now 变量将保存当前时间,并且格式为一个 Date 对象。 格式化时间…

    JavaScript 2023年5月27日
    00
  • 使用bootstrap validator的remote验证代码经验分享(推荐)

    这里是使用Bootstrap Validator的Remote验证代码经验分享攻略。 什么是Remote验证 Bootstrap Validator提供了Remote验证来检查输入是否已经存在于数据库中,而不是使用静态的规则来验证。 在其最基本的形式中,Remote验证使用AJAX请求来检查输入是否已经存在于数据库中,并根据结果来反馈验证的状态。 开始使用R…

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