返回

JavaScript——执行环境与对象

前端

JavaScript 的执行环境

JavaScript 是一种解释型语言,它通过解释器执行代码,而 JavaScript 的执行环境就是指 JavaScript 代码执行的上下文。

JavaScript 的执行环境主要包括:

  • 全局对象:
    全局对象是 JavaScript 中的一个特殊对象,它包含了所有全局变量和函数。在浏览器中,全局对象是 window 对象,而在 Node.js 中,全局对象是 global 对象。

  • 作用域:
    作用域是 JavaScript 中代码能够访问的变量和函数的集合。JavaScript 的作用域有两种:全局作用域和局部作用域。

    • 全局作用域:
      全局作用域是 JavaScript 中最外层的作用域,它包含了所有全局变量和函数。

    • 局部作用域:
      局部作用域是 JavaScript 中函数内部的作用域,它包含了函数内部的变量和函数。

  • 执行栈:
    执行栈是 JavaScript 执行代码的内存区域。当 JavaScript 代码执行时,函数会被压入执行栈中,当函数执行完毕时,函数会被从执行栈中弹出。

JavaScript 的对象

JavaScript 中的对象是具有属性和方法的集合。属性是指对象的特性,而方法是指对象的行为。

JavaScript 中的对象可以分为两种:

  • 原始对象:
    原始对象是 JavaScript 中最基本的对象,包括数字、字符串、布尔值、null 和 undefined。

  • 引用对象:
    引用对象是 JavaScript 中可以存储其他对象的对象,包括数组、对象、函数等。

JavaScript 中的对象可以通过多种方式创建:

  • 使用对象字面量:

    const person = {
      name: 'John Doe',
      age: 30,
      occupation: 'Software Engineer',
    };
    
  • 使用 new 运算符:

    const person = new Person('John Doe', 30, 'Software Engineer');
    
  • 使用工厂函数:

    function createPerson(name, age, occupation) {
      return {
        name: name,
        age: age,
        occupation: occupation,
      };
    }
    
    const person = createPerson('John Doe', 30, 'Software Engineer');
    

JavaScript 的对象访问

JavaScript 中的对象可以通过多种方式访问:

  • 使用点运算符:

    console.log(person.name); // John Doe
    
  • 使用方括号运算符:

    console.log(person['name']); // John Doe
    
  • 使用变量:

    const name = 'name';
    console.log(person[name]); // John Doe
    

JavaScript 的对象操作

JavaScript 中的对象可以通过多种方式操作:

  • 添加属性:

    person.hobby = 'Coding';
    
  • 删除属性:

    delete person.hobby;
    
  • 修改属性:

    person.name = 'Jane Doe';
    
  • 获取属性值:

    const name = person.name;
    
  • 调用方法:

    person.sayHello();
    

JavaScript 的原型链

JavaScript 中的对象都具有原型链。原型链是 JavaScript 中的一种机制,它允许对象访问其原型对象的所有属性和方法。

原型链的原理如下:

  • 当 JavaScript 创建一个对象时,它会将该对象的原型对象设置为其 proto 属性。
  • 当 JavaScript 对象访问一个属性或方法时,如果该对象没有该属性或方法,JavaScript 会沿着原型链向上查找,直到找到该属性或方法。

原型链可以用来实现对象的继承。当 JavaScript 创建一个对象时,它可以将该对象的原型对象设置为另一个对象的原型对象,这样,新对象就可以访问另一个对象的所有属性和方法。

JavaScript 的构造函数

JavaScript 中的构造函数是用于创建对象的函数。构造函数的名称必须以大写字母开头。

构造函数可以接受参数,这些参数将被用于创建新的对象。

function Person(name, age, occupation) {
  this.name = name;
  this.age = age;
  this.occupation = occupation;
}

const person = new Person('John Doe', 30, 'Software Engineer');

JavaScript 的 prototype 属性

JavaScript 中的 prototype 属性指向对象的原型对象。

console.log(person.prototype); // Person {}

原型对象包含了所有对象的共享属性和方法。

Person.prototype.sayHello = function() {
  console.log('Hello, my name is ' + this.name);
};

person.sayHello(); // Hello, my name is John Doe

总结

JavaScript 的执行环境和对象是 JavaScript 语言的核心概念。掌握这些概念对于理解 JavaScript 代码的执行机制和对象的操作至关重要。