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.