search
HomeWeb Front-endJS TutorialWhat is a javascript prototype? Detailed explanation of javascript prototype

What is a javascript prototype? Detailed explanation of javascript prototype

Sep 03, 2018 am 10:05 AM
javascriptprototypeExampleobjectConstructor

The content this article brings to you is about what is the JavaScript prototype? The detailed explanation of JavaScript prototype has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Prototype

Prototype is still relatively important. I would like to elaborate on it separately. Speaking of prototype, what is a prototype?

When the constructor is created, there is a prototype attribute. This attribute is a pointer. The system will create and associate an object by default. This object is the prototype. The prototype object is an empty object by default. , and the purpose of this object is to contain properties and methods that can be shared by all instances of a specific type.
To put it bluntly, you can call the prototype attribute on the constructor to point to the prototype, thereby creating the prototype object of that object instance.

What are the benefits of using prototypes?

The advantage of using a prototype is that all object instances can share the properties and methods it contains.

Are you dizzy? Isn’t it super messy? Constructor, prototype, and instance, don’t worry, I’ll point it out for you in one sentence
All our constructors must eventually evolve into instances to make sense, because the methods defined in the constructor cannot be used by all Instances are shared, so you can only find the upper level of the constructor, which is the prototype. The properties and methods defined on the prototype can be shared by all instances. This is the nature of the prototype object

Look You will know from the picture, the relationship between the three of them is a love triangle
What is a javascript prototype? Detailed explanation of javascript prototype
It is very easy to understand
Constructor.prototype = prototype
Prototype .constructor = constructor
Instance object .constructor = constructor (this is because the instance object cannot find the constructor attribute on itself, so it will find it in the prototype through __proto__, and point to the constructor through the prototype bridge)
Instance object.__proto__ = prototype

The prototype cannot be displayed by printing, it can only be expressed through Constructor.prototype

The following are two other ways to obtain the prototype Method

isPrototypeOf() method: Used to determine whether the pointer of this instance points to this prototype.
Object.getPrototypeOf() method: Get the prototype of the instance. The browsers supported by this method are IE9, Firefox 3.5, Safari 5, Opera 12 and Chrome, so it is recommended to obtain the object through this method. prototype.

假定有个Person构造函数和person对象
Person.prototype.isPrototypeof(person)  // 返回true说明前者是person1的原型
Object.getPrototypeOf(person) === Person.prototype // 获取person的原型

The basic principle of multiple object instances sharing the properties and methods saved by the prototype
Every time the code reads a property of an object, a search will be performed. The target is the attribute with the given name. Start with the object instance itself. If an attribute with the given name is found in the instance, the value of the attribute is returned; if not found, the prototype object pointed to by the pointer is searched and the attribute with the given name is found in the prototype object. If this property is found in the prototype object, the property value is returned.

We can access the value in the prototype, but we cannot overwrite the value in the prototype. If we add an attribute to the instance, and the attribute name has the same name as the prototype, this attribute will be blocked ( Override) that property in the prototype.

function Person() {}

Person.prototype.name = "George"
Person.prototype.sayName = function() {
    console.log(this.name)
}

let person1 = new Person();
let person2 = new Person();
person1.name = "命名最头痛";

// 在这一环节,person1.name会从他实例中找,若实例没找到,则继续搜索它的原型对象
console.log(person1.name); // 命名最头痛 
console.log(person2.name); // George

Adding a property to an instance object will only prevent us from accessing that property in the prototype, but will not modify that property. Even if this property is set to null, this property will only be set on the instance without restoring its connection to the prototype .

If you want to completely delete instance properties, you can use the delete operator, which allows us to re-access the properties in the prototype.

Usage of delete operator

依旧用上面那个例子
delete操作符可用于删除对象的属性,无论是实例上的属性,还是在原型上的属性都可以删

delete person1.name    // 删除这个实例的属性
delete Person.prototype.name    // 删除原型上的属性
delete Person.prototype.constructor // 删除constructor属性,这样就没办法指回函数了

hasOwnProperty() method can be used to detect whether a property exists in the instance or in the prototype. This method only returns true if the given property exists in the object instance. It can also be understood that the hasOwnProperty method is used to detect whether this property is a property of the object itself.
obj.hasOwnProperty('property name')

Demo:

function Person(){ 
  this.name = '命名最头痛'
}
var person = new Person()
Person.prototype.age = '18'
console.log(person.hasOwnProperty('name'))  // true
console.log(Person.prototype.hasOwnProperty('age')) // true

in operator

The in operator has two uses
①Put it in for Used in -in loop, for-in can return all enumerable (enumerable) properties that can be accessed through objects (enumerable properties can be seen at a glance)

The above is the detailed content of What is a javascript prototype? Detailed explanation of javascript prototype. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
JavaScript in Action: Real-World Examples and ProjectsJavaScript in Action: Real-World Examples and ProjectsApr 19, 2025 am 12:13 AM

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

JavaScript and the Web: Core Functionality and Use CasesJavaScript and the Web: Core Functionality and Use CasesApr 18, 2025 am 12:19 AM

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding the JavaScript Engine: Implementation DetailsUnderstanding the JavaScript Engine: Implementation DetailsApr 17, 2025 am 12:05 AM

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python vs. JavaScript: The Learning Curve and Ease of UsePython vs. JavaScript: The Learning Curve and Ease of UseApr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python vs. JavaScript: Community, Libraries, and ResourcesPython vs. JavaScript: Community, Libraries, and ResourcesApr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

From C/C   to JavaScript: How It All WorksFrom C/C to JavaScript: How It All WorksApr 14, 2025 am 12:05 AM

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

JavaScript Engines: Comparing ImplementationsJavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AM

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

Beyond the Browser: JavaScript in the Real WorldBeyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AM

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment