JavaScript创建函数和对象的常用方法

作者 : admin 本文共1617个字,预计阅读时间需要5分钟 发布时间: 2024-06-16 共1人阅读

简介 

 随着版本的更新,JavaScript中存在大量的创建函数和对象的方法,下面是一些常见的方式以及对应的优缺点,内容参考:ES6 入门教程

创建函数

1. 函数声明(Function Declaration)
function myFunction(arg1, arg2) {
    // 函数体
    console.log(arg1, arg2);
}

优点: 

  • 函数提升:函数声明在编译阶段会被提升,因此可以在函数声明之前调用它。(类似于变量提升)
  •  清晰的语法:函数声明的语法简单明了,易于阅读和理解。

缺点:

  • 全局污染:在全局作用域中声明函数可能会导致命名冲突。
  • 缺乏灵活性:函数声明不适用于动态创建函数。
2.1 函数表达式
let myFunction2 = function (arg1, arg2) {
    // 函数体
    console.log(arg1, arg2);
};

 优点: 

  •     灵活性:可以将函数作为变量赋值,适用于动态创建函数。
  •     局部作用域:可以避免全局污染,特别适用于闭包。

 缺点:

  • 函数只能在声明之后调用。
 2.2 函数表达式(箭头函数)
let myFunction2copy = (arg1, arg2) => {
    // 函数体
    console.log(arg1, arg2);
}

  优点: 

  • 语法简洁。
  • 箭头函数不会绑定自己的 this,而是继承自外部作用域

  缺点:

  • 没有自己的this,不适用于需要动态上下文的情况
  • 箭头函数没有 arguments 对象。
 3.动态函数
let myFunction3 = new Function('arg1', 'arg2', 'console.log(arg1, arg2);');

优点:

  • 提高代码灵活性:可以在运行时根据需要动态生成函数。
  • 动态代理:可以在不修改原始对象的情况下,动态添加行为到对象的方法。
  • 异步编程:可以用来处理异步操作,而无需使用回调函数

缺点:

  • 可读性和维护性差:动态创建的代码可能难以阅读和理解,特别是对于不熟悉的开发者。
  • 性能问题:过度使用动态函数可能会导致性能问题,因为JavaScript引擎可能无法优化动态生成的代码。
  • 调试困难:动态创建的代码可能更难调试,因为它不是静态的。

创建对象 

1. 使用对象字面量 
var obj = {}; // 创建一个空对象
var person = {
    name: "谭梦寻",
    age: 18,
    greet: function() {
        console.log("Hello, my name is " + this.name);
    }
};

优点:简单直观。

缺点:如果属性名不是合法的标识符,会导致语法错误。

2. 使用构造函数 
function Person(name, age) {
    this.name = name;
    this.age = age;
}
 
var person = new Person("Bob", 30);

优点:可以重用代码和组织继承。

缺点:每个实例都会创建新的方法实例,浪费内存。

3. 使用Object.create()方法 
var personProto = {
    greet: function() {
        console.log("Hello, my name is " + this.name);
    }
};
 
var person = Object.create(personProto);
person.name = "Charlie";
person.age = 28;

优点:可以设置原型对象以实现继承和共享方法。

缺点:不是所有浏览器都支持Object.create()。

4.  使用类(ES6+)
class Student {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
 
    greet() {
        console.log("Hello, my name is " + this.name);
    }
}
 
const student = new Student("Dave", 22);

优点:提供了更接近传统语言的面向对象编程体验,包括继承、封装和多态。

缺点:需要支持ES6及以上版本的JavaScript环境。

 

 

 

 

 

本站无任何商业行为
个人在线分享 » JavaScript创建函数和对象的常用方法
E-->