1. js only contains objects, including objects, functions, and constants. Objects do not need to be interpreted. Functions also have attributes. prototype is a common one. Constants also have attributes: (3 ). _ proto __; // Number {} 2. the prototype function of a function is a special object. It can directly execute its own code through parentheses. The function also has a special property prototype, which is also an object. The prototype object also has a special attribute constructor, which initially points to this function. That is, when js interprets the function keyword, it creates two objects: the function itself and the prototype object. At the same time, point the prototype attribute of the function object to prototype, and the constructor attribute of the prototype object to the function object. 3. the _ proto _ attribute of an object. Each object has a _ proto _ attribute (it may not be provided directly in earlier versions of IE). This attribute is very special, when calling an object's method or accessing the object's attributes, js will traverse the object itself in sequence, and the object's _ proto __, the _ proto _… of this object __...... That is, the key of prototype chain inheritance 4. The new Keyword new is used to create a method through a function. In fact, it mainly completes three tasks to create an object and calls the _ proto _ of this object to the prototype of the function. (Note that the function scope is the object created in the first step) finally, this object is returned. You can use the following code to replace function New (f, args) {var a ={};. _ proto _ = f. prototype; f. apply (a, args); return a;} 5. js Object diagram. xFunction is a custom function, xPrototype is the prototype of xFunction, and xObject = new xFunction () Object is the built-in Object of JS; _ prototype _ is the prototype of the Object. Empty is the _ proto __of all function objects. It is a special function without prototype. I hope you can discuss it and give some advice.