学习JavaScript面向对象是Web开发中非常重要的一块,能够帮助我们更好的组织和管理JavaScript代码,实现更好的代码复用和模块化开发。在JavaScript中,我们可以使用多种方式来创建对象,本篇攻略将详细介绍9种创建对象的方式,以便大家更好地掌握JavaScript面向对象编程。
1. Object方式
通过Object
方式创建对象是最基础的一种方式,可以直接使用new
关键字以及Object
构造函数创建:
let obj = new Object(); // 或者 let obj = {}
obj.name = "Jack";
obj.age = 18;
console.log(obj); // { name: "Jack", age:18 }
2. 对象字面量方式
对象字面量方式创建对象更加简洁明了,不需要使用new
关键字和构造函数,直接使用大括号表示一个对象即可:
let obj = {
name: "Jack",
age: 18
};
console.log(obj); // { name: "Jack", age:18 }
3. 工厂方式
工厂方式可以帮助我们批量创建对象,通常会将对象的创建过程封装在一个函数中。通过调用该函数可以轻松地创建多个对象:
function createObj(name, age) {
let obj = new Object();
obj.name = name;
obj.age = age;
return obj;
}
let obj1 = createObj("Jack", 18);
let obj2 = createObj("Tom", 20);
console.log(obj1); // { name: "Jack", age: 18 }
console.log(obj2); // { name: "Tom", age: 20 }
4. 构造函数方式
使用构造函数创建对象是面向对象编程中最重要的一种方式,通过定义一个构造函数,再使用new
关键字调用该函数来创建对象:
function Person(name, age) {
this.name = name;
this.age = age;
}
let person = new Person("Jack",18);
console.log(person); //{ name: "Jack", age:18 }
5. 原型方式
使用原型方式可以让我们通过在原型对象中添加属性和方法,实现所有该类型对象之间属性共享和方法共享的效果:
function Person(){}
Person.prototype.name = "Jack";
Person.prototype.age = 18;
Person.prototype.sayHello = function(){
console.log("Hello!");
}
let person1 = new Person();
let person2 = new Person();
console.log(person1.name); // Jack
console.log(person2.name); // Jack
person1.sayHello(); // Hello!
person2.sayHello(); // Hello!
6. 组合方式
组合方式是结合了构造函数与原型方式两种方式的一种方式,可以同时享受到构造函数方式和原型方式的优点:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log("Hello!");
};
let person1 = new Person("Jack", 18);
let person2 = new Person("Tom", 20);
console.log(person1.name); // Jack
console.log(person2.name); // Tom
person1.sayHello(); // Hello!
person2.sayHello(); // Hello!
7. 动态原型方式
动态原型方式可以让我们通过判断是否已初始化原型对象,实现动态初始化原型对象的效果:
function Person(name, age) {
this.name = name;
this.age = age;
if(typeof Person.prototype.sayHello != "function") { //注意判断条件
Person.prototype.sayHello = function() {
console.log("Hello!");
};
}
}
let person1 = new Person("Jack", 18);
let person2 = new Person("Tom", 20);
console.log(person1.name); // Jack
console.log(person2.name);// Tom
person1.sayHello(); // Hello!
person2.sayHello(); // Hello!
8. 寄生构造函数方式
使用寄生构造函数方式可以在不改变原始类型的情况下,扩展原始类型的功能,同时可以使用new
关键字调用该构造函数:
function Person(name, age) {
let obj = new Object();
obj.name = name;
obj.age = age;
obj.sayHello = function() {
console.log("Hello!");
}
return obj;
}
let person = new Person("Jack", 18);
console.log(person.name); // Jack
person.sayHello(); // Hello!
9. 稳妥构造函数方式
稳妥构造函数方式创建的对象不会对外暴露任何属性和方法,只能通过定义在函数作用域中的方法访问内部属性:
function Person(name, age) {
let obj = new Object();
obj.sayHello = function() {
console.log("Hello, " + name + "!");
}
return obj;
}
let person = Person("Jack", 18);
person.sayHello(); // Hello, Jack!
通过这9种创建对象的方式掌握,相信大家已经对JavaScript面向对象编程有了更加深入的认识。同时,我们也需要结合实际项目需求,综合考虑使用不同的方式来创建对象,以达到最佳的编程效果和最优的程序性能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:学习javascript面向对象 掌握创建对象的9种方式 - Python技术站