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!
Python vs. JavaScript: Community, Libraries, and ResourcesApr 15, 2025 am 12:16 AMPython 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.
From C/C to JavaScript: How It All WorksApr 14, 2025 am 12:05 AMThe 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.
JavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AMDifferent 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.
Beyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AMJavaScript'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.
Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Apr 11, 2025 am 08:23 AMI built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing
How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AMThis article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base
JavaScript: Exploring the Versatility of a Web LanguageApr 11, 2025 am 12:01 AMJavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.
The Evolution of JavaScript: Current Trends and Future ProspectsApr 10, 2025 am 09:33 AMThe latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.


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

SublimeText3 Chinese version
Chinese version, very easy to use

Atom editor mac version download
The most popular open source editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1
Powerful PHP integrated development environment

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







