reference type : In JavaScript, a reference type is a data structure that organizes data and functionality together and is often referred to as a class. Reference types are also sometimes referred to as object definitions because they describe the properties and methods that a class of objects have.
Reference object's Value (object): is an instance of a reference type. An object is an instance of a particular reference type that is created with a constructor after using the new operator. The constructor itself is a function, except that the function is defined for the purpose of creating a new object. An alias for an object is a collection.
Object: is a set of data and functions
[1] Object creation: How to create two types of object
[1.1] using the new operator followed by the object constructor
var person = new Object (); similar to var person = new object;//means that you can do without parentheses person.name = ' Bai ';p erson.age = 29;
[1.2] Using object literals
var person = { name: ' Bai ', age:29}
[Note 1] Use commas in the object literal to separate different attributes, but adding commas after the last attribute will cause errors in IE7 and earlier versions and opera
[Note 2] The object literal is used to define the object, the property name is automatically converted to a string, and the object constructor is not actually called
[Note 3] If you leave the curly braces blank, you can define an object that contains only the default properties and methods
e.g. var person = {}; equals var person = new Object ();
[1.2.1] uses the object literal to encapsulate several optional parameters:
function DisplayInfo (args) { var output = '; if (typeof args.name = = ' string ') { output + = ' Name: ' + args.name + ' \ n '; } if (tyoepf args.age = = ' number ') { output + = ' Age: ' + args.age + ' \ n '; } alert (output);} DisplayInfo ({ name: ' Nicholas ', age:29});
[note] These modes of passing parameters are best suited for situations where a large number of optional parameters are required to be passed to the function. As a best practice, use formal parameters for those required values, and use object literals to encapsulate multiple optional parameters.
[2] Properties and methods for instance of object
[2.1]constructor: Saves the function used to create the current object
[2.2]hasownproperty (PropertyName): Used to check whether a given property exists in the current object instance, rather than in the prototype of the instance. Where PropertyName must be specified as a string
[2.3]isprototypeof (object): Used to check if an incoming object is a prototype of an incoming object
[2.4]propertyisenumerable (PropertyName): Used to check whether a given property can be enumerated using a for-in statement. Where PropertyName must be specified as a string
[2.5]tolocalestring (): Returns the string representation of an object that corresponds to the region of the execution environment.
[2.6]tostring (): Returns the string representation of an object
[2.7]valueof (): Returns the string, numeric, or Boolean representation of an object, usually the same as the return value of the ToString () method
[3] Two methods of accessing object properties
[Note 1] It is recommended that you use dot notation unless you have to use variables to access the property, and that the name of the property name should conform to the naming convention
[Note 2] There can be Chinese in the variable because Chinese is equivalent to a character and is treated the same as English characters, so it can be written as a person. White or person[' white '
[Note 3] the value in square brackets if the non-string type is implicitly converted to string and then output using string (), if it is a string type, if the original value output, otherwise it will be recognized as a variable, if the variable is not defined, the error
Person[0] = 1; The number in [] does not error, but is automatically converted to string person[a] = 1; [] The element that conforms to the variable naming rule is treated as a variable, the variable is not defined, and the error person['] = 2; The empty string in [] does not error, is actually present and can be called, but does not display person[undefined or null or TRUE or FALSE in the collection on the right side of the console = 4;//does not error, but is automatically converted to a string person[' white ' = 6; No error.
[3.1] Person.name
[3.2]person[' name ']
[3.2.1] The main advantages of square brackets
[A] The property can be accessed through a variable
[B] Property name can contain a character that causes a syntax error, or a keyword or reserved word is used in the property name
e.g. person[' first name '];
[4] objects can be nested, but must be value-by-layer
var student = { name: { chinese:1, englisth:2 }, sex:1, age:26}
[note] The value can only be taken one layer at a level, such as Student.name.chinese, but not across name, directly with Student.chinese, because with the name of the sibling may also have an element called Chinese
[5] Delete operator of the object: Delete can only delete the data under the object, the value of the other 5 underlying types is not dropped
[5.1] If the variable A is declared in the global state, the equivalent of a Window object under a data A, you can use WINDOW.A or a to assign a value, and the values of WINDOW.A and a are always equal, but it is not possible to delete
[5.2] If the window.b to declare and assign a value (b equivalent to declare under the Window object), can be deleted, and with the same effect as delete B and delete window.b, after deletion, Console.log (b) Prompt variable does not exist, Console.log (window.b) Tip undefined
Object of JavaScript Reference type