This article mainly introduces the four ways to create objects in JavaScript, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
Keywords
Object.create; new Object(); new Fn(); {}
Background
##This paragraph can be skipped and not read... In daily use, the most common way to create an object is to create it directly using {}, where you can directly write methods and properties; but in one practice, the object created in this way was written in another js file. , I don’t know how to use it in HTML. Baidu used the Object.create method after a long time. Unexpectedly, it encountered a new pitfall. This method only supports ES5 and above. In lower versions, compatibility processing is required. Now it will These methods of creating objects are organized for easy reference in the future.
Parameters:
proto: new Create the prototype object of the object
propertyObject: The enumerable property of the newly created object, equivalent to the second parameter in Object.defineProperty()
Return value: The newly created object
var aa = { valA:1, fnA: function(){console.log(this.valA)} }; var bb = Object.create(aa, { // foo会成为所创建对象的数据属性 foo: { writable:true, configurable:true, value: "hello" }, // bar会成为所创建对象的访问器属性 bar: { configurable: false, get: function() { return 10 }, set: function(value) { console.log("Setting `o.bar` to", value); } } });The result is: The attributes that bb can access are:
(1) its own foo and bar
(2) aa's valA and fnA
and, bb.__proto__ == aa
if (typeof Object.create !== "function") { Object.create = function (proto, propertiesObject) { if (typeof proto !== 'object' && typeof proto !== 'function') { throw new TypeError('Object prototype may only be an Object: ' + proto); } else if (proto === null) { throw new Error("This browser's implementation of Object.create is a shim and doesn't support 'null' as the first argument."); } if (typeof propertiesObject != 'undefined') throw new Error("This browser's implementation of Object.create is a shim and doesn't support a second argument."); function F() {} F.prototype = proto; return new F(); }; }
In short, remember one sentence, the prototype of the new object is proto, and proto is the first parameter of Object.create
3. Easter eggsTwo bonus pieces are included The picture may be useful, 锵锵锵~~~~##Okay, in case the picture cannot be opened, the picture First, the new object methods in ES5 include create&keys and defineProperty, String methods include trim, and array methods include indexOf, filter&map, and foreach. Figure 2 is a browser that supports ES5. Chrome supports it well, but IE can only support it better in IE11;
Method 2: new constructor
This method It is also very commonly used, especially for inheritance and so on. It has better scalability and encapsulation.
function Person(){ this.name = '****'; this.age = 11, this.getAge = function(){} }
You can use
var p = new Person();
to print out p
{ name: '****'; age: 11, getAge: function(){}, __proto__: Object } pp.constructor == Person ==> **true** Person.__proto__ == Function.prototype ==> **true**
Method 3: new Object()
1. Create an empty object
var obj = new Object();
Equivalent to
var obj = {};
You can continue to extend properties and methods
2.
var aa = { valA:1, fnA: function(){console.log(this.valA)} }; var oo = new Object(aa);
The result is:
oo === aa ==> true oo.valA = 2; console.log(aa.valA) ==> 2
It means that oo is a shallow copy of aa, which is the same as direct copying of the object.
I don’t know why I want to test like this. . . .This method is similar to new Person because:
Object.__proto__ == Function.protoTypePerson.__proto__ == Function.protoType
Object Is the constructor of the object, and its prototype object is also the prototype of Function
Method 4: {}
This method is called:
Use object literals to create objects, this This is the simplest way and the one I often use to simplify the process of creating objects with a large number of properties. var person = {
name: '*****',
age: 11,
getAge: function(){
return this.age;
},
setAge: function(newAge){
this.age = newAge;
}
}
调用时:
person.name
person['name']
扩展属性时:
person.hairColor = 'black';
person.getName = function(){};
Someone has done tests,
Summary
These are several commonly used ways to create objects. The ones I commonly use are method four and method two. Method four is more direct and fast, and method two is often used to do Inheritance and the like; the first method needs to consider the issue of compatibility with ES5. It can extend the enumerable properties of some new objects. I always feel that it has some connection with defineProperty, but I don’t quite understand it yet. Please give me some advice.
The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!
Related recommendations:
Similarities and differences between browsers and NodeJS EventLoop and some mechanisms
##Use javascript to determine browser type
The above is the detailed content of Four ways to create objects in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

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.

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 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 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 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.

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.

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.

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.


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

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

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

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software