1.使用 Object 构造函数
使用 Object 构造函数是创建对象最简单的方法,但是不建议采用这种方法创建对象。
let obj = new Object(); //创建空对象
obj.name = "JSindexHTML"; //给方法添加属性
obj.outputName = function () { //给对象添加方法
console.log("我的名字是"+this.name);
};
obj.outputName();
2.使用 Object 的 create 方法创建对象
通过将原型对象作为一个参数传递给 Object 的 create 方法来创建一个对象。
//创建原型对象person
const person = {
outputName: function () {
console.log(`My name is ${this.name},my adress is ${this.adress}.`);
}
}
//将上面的原型对象传递给 Object 的 create 方法来创建对象 me。
let me = Object.create(person);
me.name = "JSindexHTML";
me.adress = "四川成都";
me.outputName();
3.使用对象字面量创建对象
使用对象字面量是创建对象最常用的方法。
let obj={
name:"JSindexHTML",
outputName:function(){
console.log("我的名字是"+this.name);
}
}me.outputName();
4.工厂模式
function person(name) {
let object = {};
object.name = name;
object.inputName = function () {
console.log("我的是" + this.name);
}
return object;
}
let obj = p寄生构造函数模式erson("JSindexHTML");
obj.inputName();
上面的工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程。考虑到在 ECMAScript 中无法创建类,开发人员 就发明了一种函数,用函数来封装以特定接口创建对象的细节。
函数 Person()能够根据接受的参数来构建一个包含所有必要信息的 object 对象。可以无 数次地调用这个函数,而每次它都会返回一个包含一个属性和一个方法的对象。工厂模式虽然解决了创建 多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)。
5.寄生构造函数模式
创建任意函数并应用new运算符创建对象实例,
function Person(name) {
let object = {};
object.name = name;
object.inputName = function () {
console.log("我的是" + this.name);
}
return object;
}
let obj = new PersonJSindexHTML");
obj.inputName();
这种模式 的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象;但 从表面上看,这个函数又很像是典型的构造函数。除了使用 new 操作符并把使用的包装函数叫做构造函数之外,这个模式跟工厂模式其实 是一模一样的。
6.使用原型模式
function Person() {};
Person.prototype.name = "JSindexHTML";
Person.prototype.inputName = function () {
console.log(this.name);
};
let obj = new Person();
obj.inputName();
我们将 Person 的方法和所有属性直接添加到了 Person 的 prototype 属性中,构造函数 变成了空函数。这种模式无法给构造函数传递参数。新对象的这些属性和方法是由所有实例共享的。
这相当于使用带有函数原型的object create方法创建的实例,然后使用实例和参数作为参数调用该函数。
7.使用ES6中的class
class Person {
constructor(name) {
this.name = name;
}
}
var object = new Person("JSindexHTML");
8.单例模式
单例是一个只能实例化一次的对象。对其构造函数的重复调用返回相同的实例,这样可以确保它们不会意外地创建多个实例。
var object = new function(){
this.name = "Sudheer";
}
9.构造函数模式
构造函数模式时创建对象最常用的模式,创建构造函数,然后使用new实例化这个构造函数
function Person(name, adress){
this.name = name;
this.adress = adress;
this.inputName = function(){
alert(this.name);
};
}
var person1 = new Person("JSidnexHTML", "四川成都");
var person2 = new Person("dwy", "贵州贵阳");