


JS simulation object-oriented complete solution (1, type and transfer)_javascript skills
However, without classes, how can we talk about object orientation? It doesn't matter, you can simulate it. And this set of methods has become a recognized method for realizing object-oriented JS.
In addition, things in JS are fully developed, so there is no private or protected scope of members.
Let’s get to the point.
1. Types //Start from the basics, saving you trouble later
1. The difference between types
Basic data types and object types are not the same thing.
a. The basic type is just a value and has no behavior; while the object type has its own behavior.
b. The basic type is a value type, which only represents one value; the object type has many complex things.
c. When passing basic types, pass the value, and when passing the object type, pass the address.
In addition, text is very special. There are two text types in JS - a basic data type and an object type. For example:
var str="The End";//This is the basic data type, and the transmission method is to pass value
var str2=new string("The End");//This is different, there are With new, the identifier that opens up memory space for an object, the corresponding variable will become the object type, and the address will be passed when passing
To put it simply: a. Variables assigned directly with literals, such as var a=1;var b="a";var c=true;, are all basic data types (commonly used are: numerical, text, Boolean)
b. Variables assigned with new, such as var a=new Object();var b =new string();, all are object types (JS has many objects, it is a streamlined object-oriented language) Please note: basic data types can also be new, but there is rarely that use. Therefore, the above distinction is not completely applicable to all situations, please make your own judgment.
2. Parameter passing method This section mainly distinguishes between passing by address and passing by value. Let’s still take an example:
function changeVar(varible) {
varible=5;
alert(varible); // Tip 5
}
var a=3;
alert(a); // Tip 3
changeVar(a );//There is code to change the parameters inside the function alert(a);//Still prompt 3
According to the above example, it can be found that although the function changes the parameters, it does not change what the parameters represent. Pass the past variable. This is pass by value. When calling changeVar, JS re-copies the variable you passed as a parameter, so the parameters operated inside changeVar are actually a copy of the variable you passed, not itself. What is passed is actually the value of the variable, not the variable itself. This is called pass by value.
function changeVar(varible){
varible.x =5;
alert(varible.x);//Prompt 5
}
var a=new Object;
a.x=3 alert(a.x);//Prompt 3
changeVar( a);//There is code to change parameters inside this function
alert(a.x);//Prompt 5
The above example has been changed to use the Object object. It is found that after changeVar, the corresponding attributes of the original variable also change, and the inside of the function is the variable itself passed by the operation. This is the principle of passing by address. If you pass the memory address of the variable you gave, what changes inside the function is actually the variable you passed. Because all operations are at the same memory address.
However, be sure to pay attention to this “but”! There is still something special about JS’s delivery address! When JS passes the object type, it probably also copies an object of the corresponding type, but all the properties and functions of the copy object are the properties and functions of the original object. Maybe it's that the attribute is passed by address but the object is not. This characteristic can be proven. The code is as follows:
function changeVar(varible){
varible=new Object();
varible.x=5;
alert(varible.x); // Tip 5
}
var a=new Object;
a.x=3 alert (a.x);//Tip 3
changeVar(a);//There is code to change parameters inside this function
alert(a.x);//Tip 3
When you change When you change the object represented by the parameter, the object represented by the variable you passed does not change. But as mentioned before, the properties of the object represented by the original variable can be changed by operating the properties of the parameter object within the function. Combined, this can prove that when JS passes the object type, it also copies an object of the corresponding type, but all the properties and functions of the copy object are the properties and functions of the original object.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



How to use Go language to implement object-oriented event-driven programming Introduction: The object-oriented programming paradigm is widely used in software development, and event-driven programming is a common programming model that realizes the program flow through the triggering and processing of events. control. This article will introduce how to implement object-oriented event-driven programming using Go language and provide code examples. 1. The concept of event-driven programming Event-driven programming is a programming model based on events and messages, which transfers the flow control of the program to the triggering and processing of events. in event driven

The @JsonIdentityInfo annotation is used when an object has a parent-child relationship in the Jackson library. The @JsonIdentityInfo annotation is used to indicate object identity during serialization and deserialization. ObjectIdGenerators.PropertyGenerator is an abstract placeholder class used to represent situations where the object identifier to be used comes from a POJO property. Syntax@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Go language supports object-oriented programming through type definition and method association. It does not support traditional inheritance, but is implemented through composition. Interfaces provide consistency between types and allow abstract methods to be defined. Practical cases show how to use OOP to manage customer information, including creating, obtaining, updating and deleting customer operations.

OOP best practices in PHP include naming conventions, interfaces and abstract classes, inheritance and polymorphism, and dependency injection. Practical cases include: using warehouse mode to manage data and using strategy mode to implement sorting.

Analyzing the Flyweight Pattern in PHP Object-Oriented Programming In object-oriented programming, design pattern is a commonly used software design method, which can improve the readability, maintainability and scalability of the code. Flyweight pattern is one of the design patterns that reduces memory overhead by sharing objects. This article will explore how to use flyweight mode in PHP to improve program performance. What is flyweight mode? Flyweight pattern is a structural design pattern whose purpose is to share the same object between different objects.

The Go language supports object-oriented programming, defining objects through structs, defining methods using pointer receivers, and implementing polymorphism through interfaces. The object-oriented features provide code reuse, maintainability and encapsulation in the Go language, but there are also limitations such as the lack of traditional concepts of classes and inheritance and method signature casts.

There is no concept of a class in the traditional sense in Golang (Go language), but it provides a data type called a structure, through which object-oriented features similar to classes can be achieved. In this article, we'll explain how to use structures to implement object-oriented features and provide concrete code examples. Definition and use of structures First, let's take a look at the definition and use of structures. In Golang, structures can be defined through the type keyword and then used where needed. Structures can contain attributes

C# (CSharp) is a powerful and popular object-oriented programming language that is widely used in the field of software development. During the C# development process, it is very important to understand the basic concepts and design principles of object-oriented programming (OOP). Object-oriented programming is a programming paradigm that abstracts things in the real world into objects and implements system functions through interactions between objects. In C#, classes are the basic building blocks of object-oriented programming and are used to define the properties and behavior of objects. When developing C#, there are several important design principles
