当前位置: 首页 > news >正文

在 JavaScript 中如何定义一个对象

今天,同事(已经 从事前端开发4 年有余了,从一开始就是使用 vue 和 react ,结合着 webpack 写这个 ES6 相关的东西,很少接触到有关 ES6 之前的东西 的写法)问了我一个问题,说有一个东西不知道怎么去进行迁移(即看不懂),即类似于以下的这样的形式内容;


function FunObj() { }
FunObj.prototype.getRandom = function (min, max) {
  return Math.floor(Math.random() * (max - min) + min);
}

FunObj.prototype.getRandomColor = function () {
  let r = this.getRandom(0, 256);
  let g = this.getRandom(0, 256);
  let b = this.getRandom(0, 256);
  return "rgb(" + r + "," + g + "," + b + ")";
}

当我看到他问的这个问题的时候,我当时心里一惊,这不就是我们(我是 10 年开始接触前端14 年正式进入前端工作)曾经经常写的JavaScript 的对象定义么,他居然看不懂,后来一想也是,毕竟从他们出来,接触的东西,跟我们刚出来的时候接触的东西差别还是挺大的,就比如说 ES6 之前的对象定义、对象继承等等;其实也并非他们不努力,只是说接触的东西少,现在写的都现代化的一些东西。

接下来,我就简单的总结一下,如何在 JavaScript 中进行定义对象:

1. 对象字面量

这是最常见的方式,使用花括号 {} 定义对象,属性和方法用键值对表示。

const person = {
    name: "Alice",
    age: 25,
    greet: function() {
        console.log("Hello, my name is " + this.name);
    }
};

console.log(person.name); // 输出: Alice
person.greet(); // 输出: Hello, my name is Alice

2. 使用 new Object()

通过 new Object() 创建对象,然后添加属性和方法。

const person = new Object();
person.name = "Bob";
person.age = 30;
person.greet = function() {
    console.log("Hello, my name is " + this.name);
};

console.log(person.name); // 输出: Bob
person.greet(); // 输出: Hello, my name is Bob

3. 构造函数

通过构造函数创建对象,适合需要创建多个相似对象的场景。

function Person(name, age) {
    this.name = name;
    this.age = age;
    this.greet = function() {
        console.log("Hello, my name is " + this.name);
    };
}

const person1 = new Person("Charlie", 35);
const person2 = new Person("David", 40);

console.log(person1.name); // 输出: Charlie
person2.greet(); // 输出: Hello, my name is David

4. Object.create()

使用 Object.create() 基于现有对象创建新对象。

const personPrototype = {
    greet: function() {
        console.log("Hello, my name is " + this.name);
    }
};

const person = Object.create(personPrototype);
person.name = "Eve";
person.age = 28;

console.log(person.name); // 输出: Eve
person.greet(); // 输出: Hello, my name is Eve

5. ES6 类

使用 ES6 的 class 语法定义对象。

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    greet() {
        console.log("Hello, my name is " + this.name);
    }
}

const person = new Person("Frank", 45);

console.log(person.name); // 输出: Frank
person.greet(); // 输出: Hello, my name is Frank

总结

  • 对象字面量:简单直接。
  • new Object():较少使用。
  • 构造函数:适合创建多个相似对象。
  • Object.create():基于原型创建对象。
  • ES6 类:现代语法,适合复杂对象。

根据需求选择合适的方式。

相关文章:

  • 论文笔记:Scaling Sentence Embeddings with Large Language Models
  • 如何在 Vue 项目中为 `el-pagination` 设置中文
  • Sky Hackathon 清水湾的水 AI美食助手
  • 一键快速打包提交发布命令行工具
  • 【报错解决】vue打开界面报错Uncaught SecurityError: Failed to construct ‘WebSocket‘
  • zabbix排障-zabbix监控的主机出现可用性灰色或者红色问题
  • 欢乐力扣:快乐数
  • MySQL 8.0 社区版安装与配置全流程指南(Windows平台)
  • linux-多进程基础(1) 程序、进程、多道程序、并发与并行、进程相关命令,fork
  • 详细解析d3dx9_27.dll丢失怎么办?如何快速修复d3dx9_27.dll
  • 四元数 欧拉角
  • 【AI+智造】DeepSeek价值重构:当采购与物控遇上数字化转型的化学反应
  • 【SpringBoot】【JWT】0.12.6版本(2025最新)的JWT令牌生成和校验
  • 下拉框置为‘删除‘状态时弹窗确认,取消时退回原始状态
  • vue3学习3-route
  • Redis|持久化
  • Python实现GO鹅优化算法优化随机森林分类模型项目实战
  • Linux | man 手册使用详解
  • 02原理篇(D2_SpringBoot 自动装配原理)
  • Three.js 快速入门教程【八】常见材质类型
  • 东莞网站开发哪家好/北京网站推广机构
  • 网站服务器租用哪家好/2023年9月疫情又开始了吗
  • 泉州网站seo公司/google seo 优化教程
  • 请拿笔记记下新域名/武汉seo结算
  • 怎么查网站是哪家制作公司做的/建站优化公司
  • 湖南企业网站制作公司/线上推广