优秀的编程知识分享平台

网站首页 > 技术文章 正文

每天一道JavaScript面试题(1):创建对象的方法有哪些?

nanyue 2024-09-03 16:26:12 技术文章 8 ℃

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",  "贵州贵阳"); 
最近发表
标签列表