学习javascript面向对象 掌握创建对象的9种方式

yizhihongxing

学习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技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS实现json的序列化和反序列化功能示例

    下面是关于“JS实现json的序列化和反序列化功能示例”的完整攻略: 一、什么是JSON? JSON全称为JavaScript Object Notation,是一种轻量级的数据交换格式。JSON基于JavaScript语法的一部分,但是可以被包括C,C++,Java,Python等等其他编程语言所使用。 JSON通常用于客户端和服务器之间的数据传输。可以将…

    JavaScript 2023年5月27日
    00
  • JavaScript为对象原型prototype添加属性的两种方式

    JavaScript中每个对象都有一个内部链接属性[[Prototype]],它指向另一个对象(null除外),即该对象的原型。原型可以包含属性和方法,这些属性和方法可以被该对象和它的所有子孙对象继承。可以通过两种方式给一个对象原型prototype添加属性,具体如下: 方式一:直接添加属性 可以通过直接为原型对象添加属性和方法来为构造函数添加属性。这种方式…

    JavaScript 2023年5月27日
    00
  • JavaScript基础语法之js表达式

    让我们一起来详细讲解一下“JavaScript基础语法之js表达式”的完整攻略。 什么是JavaScript表达式? JavaScript表达式是JavaScript中计算值的一种方法。表达式可以是简单的数学计算、变量、函数调用,或者由运算符和操作数组成的复杂语句。在JavaScript中,任何使用分号(;)结尾的操作都是表达式。 在JavaScript中,…

    JavaScript 2023年5月18日
    00
  • 详解angularjs获取元素以及angular.element()用法

    首先在讲解“详解angularjs获取元素以及angular.element()用法”的完整攻略前,我们需要了解一些前置知识。 前置知识 1. AngularJS 框架 AngularJS是一款由Google主导开发的前端框架。AngularJS的主要优点有: MVVM模式,分离了视图和逻辑,使代码更易维护。 具有依赖注入功能,这实现了组件之间的松散耦合,增…

    JavaScript 2023年6月10日
    00
  • 分享5个JavaScript的写法小技巧

    下面我将为您详细讲解“分享5个JavaScript的写法小技巧”的完整攻略。 1. 使用解构赋值获取对象中的属性值 解构赋值是一个方便快捷的方式来获取对象中的属性值,可以让你避免手动访问和提取对象属性的繁琐操作。 示例: const obj = { name: "Tom", age: 18, gender: "male&quot…

    JavaScript 2023年5月17日
    00
  • 详解优化iOS程序性能的25个方法

    详解优化iOS程序性能的25个方法: 1. Instruments使用的基本步骤 使用Instruments工具来帮助我们检测iOS程序的性能表现是一种非常有帮助的方法,开发者可以通过这个工具来检测出程序中的瓶颈并对其进行优化。 使用Instruments工具的基本步骤为: 打开Xcode,选择路径Xcode->Open Developer Tool-…

    JavaScript 2023年6月11日
    00
  • Javascript的console[”]常用输入方法汇总

    下面是对“Javascript的console[”]常用输入方法汇总”的详细讲解攻略。 Javascript的console[”]常用输入方法汇总 在Javascript编程中,console对象是一个非常有用的工具,它提供了各种有用的函数和方法,用于在开发过程中进行调试和错误排除。其中,console[”]方法就是一个常用的工具,它允许您在控制台中输…

    JavaScript 2023年5月28日
    00
  • javascript实现将文件保存到本地方法汇总

    当用户需要在浏览器中将文件保存到本地时,可以使用JavaScript实现该功能,以下是实现该功能的一些方法。 方法一:使用HTML5的download属性 可以使用HTML5的下载属性(download attribute)来实现将文件保存到本地。将download属性添加到<a>标签或<button>标签中,并将href属性设置为文…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部