What are prototypes and prototype chains? How to inherit properties and methods of an object?


⭐ Introduction to the column

Front-end Getting Started Tour: Explore the wonderful world of Web development Remember to click the link above or on the right to subscribe to this column Oh Geometry will take you on a front-end journey

Welcome to the front-end introductory tour! This column is tailored for those friends who are interested in web development and have just stepped into the front-end field. Whether you are a complete novice or have some basic developers, here will provide you with a systematic and friendly learning platform. In this column, we will update it every day in the form of questions and answers, presenting selected front-end knowledge points and answers to frequently asked questions. Through the question-and-answer format, we hope to more directly respond to readers' questions about front-end technology, and help everyone gradually build a solid foundation. Whether it's HTML, CSS, JavaScript, or a variety of commonly used frameworks and tools, we'll explain concepts in simple terms and provide practical examples and exercises to reinforce what you've learned. At the same time, we will also share some practical tips and best practices to help you better understand and use various technologies in front-end development.

insert image description here

Not only that, we also regularly launch some practical project tutorials, so that you can apply the knowledge you have learned to actual development. Through the practice of actual projects, you will be able to better understand the workflow and methodology of front-end development, and develop your ability to solve problems and develop independently. We believe that only by continuous accumulation and practice can we truly master front-end development technology. So get ready for the challenge and bravely embark on this front-end introductory journey! Whether you're looking for a career transition, upskilling or personal interest, we're committed to providing you with the highest quality learning resources and support. Let's explore the wonderful world of web development together! Join the front-end introductory journey and become an excellent front-end developer! Let's set sail on the front-end journey


⭐ Prototype and Prototype Chain

In JavaScript, prototypes and prototype chains are important concepts for understanding object inheritance.


⭐ Prototype

Every JavaScript object has an associated prototype object, which is a reference to other objects. A prototype object is a special object that stores shared properties and methods for sharing and inheritance by other object instances. Through prototypes, you can realize the reuse of properties and methods between objects.

In JavaScript, the prototype of an object can prototypebe accessed through the property, and function objects (including constructors) have a prototypeproperty, which is the prototype object used when creating an object instance.

function Person(name) {
    
    
  this.name = name;
}

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

const person1 = new Person('Alice');
const person2 = new Person('Bob');

person1.sayHello(); // 输出:Hello, my name is Alice
person2.sayHello(); // 输出:Hello, my name is Bob

In the above example, Person.prototypeit is the prototype of person1and person2, which contains sayHellothe method, so these two objects can inherit and share this method.


⭐ Prototype Chain

The prototype chain is a mechanism for the inheritance relationship between objects. When you access a property or method of an object, JavaScript first looks in the object itself, and if it can't find it, it looks up the prototype chain until it finds the property or method or reaches the top of the prototype chain (usually) Object.prototype.

For example, if you try to access person1a property or method of , JavaScript first looks to see if the object itself has the property or method, and if not, it walks the prototype chain to find the method Person.prototypeon sayHello.

person1.sayHello(); // 输出:Hello, my name is Alice
person2.sayHello(); // 输出:Hello, my name is Bob

A prototype chain is a chain of prototype objects, each of which has a reference to its prototype. When you access a property or method, JavaScript searches in the order of the prototype chain.


⭐ Inheritance properties and methods

To inherit the properties and methods of an object, you can do the following:

  1. Constructor inheritance : By defining a constructor and using newthe keyword to create an object instance, the properties and methods of the constructor are inherited.

    function Animal(name) {
          
          
      this.name = name;
    }
    
    Animal.prototype.sayName = function() {
          
          
      console.log(`My name is ${
            
            this.name}`);
    };
    
    function Dog(name, breed) {
          
          
      Animal.call(this, name); // 调用父类构造函数,继承属性
      this.breed = breed;
    }
    
    // 继承方法
    Dog.prototype = Object.create(Animal.prototype);
    Dog.prototype.constructor = Dog; // 修复constructor属性
    
    const dog1 = new Dog('Buddy', 'Golden Retriever');
    dog1.sayName(); // 输出:My name is Buddy
    
  2. Class inheritance (the way after ES6): use the class ( class) syntax to define the constructor and method of the object.

    class Animal {
          
          
      constructor(name) {
          
          
        this.name = name;
      }
    
      sayName() {
          
          
        console.log(`My name is ${
            
            this.name}`);
      }
    }
    
    class Dog extends Animal {
          
          
      constructor(name, breed) {
          
          
        super(name); // 调用父类构造函数,继承属性
        this.breed = breed;
      }
    }
    
    const dog1 = new Dog('Buddy', 'Golden Retriever');
    dog1.sayName(); // 输出:My name is Buddy
    

These methods allow you to create objects with inheritance relationships, where child objects can access the properties and methods of the parent object. When using class inheritance, superthe keyword is used to call the parent class constructor.


⭐ Written at the end

This column is suitable for a wide range of readers, suitable for front-end beginners; or partners who have never studied the front-end and are interested in the front-end, or back-end students who want to better show themselves and expand some front-end knowledge points during the interview process, so If you have a front-end foundation and follow this column to learn, it can also help you to check and fill in the gaps to a great extent. Since the blogger himself does the content output, if there are any flaws in the article, you can contact me on the left side of the homepage , we make progress together, and at the same time recommend several columns for everyone, interested partners can subscribe: In addition to the columns below, you can also go to my homepage to see other columns;

Front-end games (free) This column will take you into a world full of creativity and fun. By using the basic knowledge of HTML, CSS and JavaScript, we will build various interesting page games together. Whether you're a beginner or have some front-end development experience, this column is for you. We'll start with the basics and guide you step-by-step through the skills you need to build web games. Through practical cases and exercises, you will learn how to use HTML to build page structure, use CSS to beautify the game interface, and use JavaScript to add interactive and dynamic effects to the game. In this column, we'll cover various types of mini-games, including maze games, arkanoid, snake, minesweeper, calculator, airplane wars, tic tac toe, puzzles, mazes, and more. Each project guides you through the building process in clear and concise steps, with detailed explanations and code examples. At the same time, we will also share some optimization tips and best practices to help you improve page performance and user experience. Whether you are looking for an interesting project to exercise your front-end skills, or are interested in web game development, the front-end small game column will be your best choice. Click to subscribe to the front-end game column

insert image description here

Vue3 transparent tutorial [from zero to one] (paid) Welcome to the Vue3 transparent tutorial! This column aims to provide you with comprehensive Vue3-related technical knowledge. If you have some Vue2 experience, this column can help you master the core concepts and usage of Vue3. We'll walk you through building a complete Vue application from scratch, step by step. Through actual cases and exercises, you will learn how to use Vue3's template syntax, component development, state management, routing and other functions. We will also introduce some advanced features, such as Composition API and Teleport, etc., to help you better understand and apply the new features of Vue3. In this column, we'll guide you through each project in clear and concise steps, with detailed explanations and sample code. At the same time, we will also share some common problems and solutions in Vue3 development to help you overcome difficulties and improve development efficiency. Whether you want to learn Vue3 in depth or need a comprehensive guide to building front-end projects, the Vue3 transparent tutorial column will become your indispensable resource. Click to subscribe to the Vue3 transparent tutorial [from zero to one] column

insert image description here

TypeScript Getting Started Guide (Free) is a column designed to help you get started quickly and master TypeScript-related technologies. Through concise and clear language and rich sample code, we will explain the basic concepts, syntax and features of TypeScript in depth. Whether you are a beginner or an experienced developer, you can find a learning path that suits you here. From core features such as type annotations, interfaces, and classes to modular development, tool configuration, and integration with common front-end frameworks, we will cover all aspects comprehensively. By reading this column, you will be able to improve the reliability and maintainability of JavaScript code, and provide better code quality and development efficiency for your own projects. Let's embark on this wonderful and challenging TypeScript journey together! Click to subscribe to the TypeScript Getting Started Guide column

insert image description here

Guess you like

Origin blog.csdn.net/JHXL_/article/details/132388584