博客
关于我
ES6——类的基本语法
阅读量:528 次
发布时间:2019-03-08

本文共 2468 字,大约阅读时间需要 8 分钟。

JavaScript 类 与 严格模式

作为 JavaScript 开发者,我们在编写代码时会经常接触到类(class)的概念以及严格模式(strict mode)的相关知识。本文将详细介绍这两个核心概念,并探讨它们对代码编写和执行的影响。


类(class)的基本概念

类是 JavaScript 中用于创建对象的模板,它通过 class 关键字定义。类似于其他编程语言中的类,类可以包含属性和方法,用以描述对象的特性和行为。以下是一个基本的例子:

class Point {  constructor(name, val) {    this.name = name;    this.age = "18";    this.val = val;    this.setData(val);  }  eat() {    console.log(`我叫${this.name}`);  }}var t = new Point("李现", "诸葛大力");console.log(t.name); // 输出:李现t.eat(); // 输出:我叫李现

在这个例子中,Point 类定义了一个对象的模板。每当我们使用 new Point 命名时,就会创建一个新的对象实例 t。通过 constructor 方法,我们定义了实例的属性和初始值。


设置和保存数据的两种写法

在 JavaScript 中,我们可以通过两种方式设置和保存数据:直接赋值和使用getter/setter 方法。以下是具体示例:

class Point {  constructor(name, val) {    this.name = name;    this.age = "18";    this.val = val;  }  eat() {    console.log(`我叫${this.name}`);  }  // 写法一:使用 getter 和 setter  get prop() {    console.log(`我的值是${value}`);  }  prop1 = "哈哈";  // 写法二:自定义数据处理方法  setData(value) {    this.val = value;    console.log(this.val);  }  getData() {    return this.val;  }}var t = new Point("李现", "诸葛大力");t.prop = 1234; // 输出:1234t.setData("我是新来的"); // 输出:我是新来的console.log(t.getData()); // 输出:我是新来的

这种写法使得对象的属性更加可读和维护友好。


属性表达式

属性表达式是 JavaScript 中一种简洁的方式来为对象定义可读且 обратисим的属性。与传统的 gettersetter不同,属性表达式可以直接在类定义时定义。

class Person {  constructor(sex) {    this.sex = sex;    this.hobby = "女";  }  shopping() {    console.log("天生会逛街");  }}let p = new Person();p.shopping(); // 输出:天生会逛街// 属性表达式改写:const shopping = "shop";[shopping] = class Person {  shopping() {    console.log("一个省钱的春节");  }}();let person = new Person();person.shop(); // 输出:一个省钱的春节

这种写法可以显著简化代码,同时保持可读性。


类表达式(class expressions)

类表达式是类的另一种定义方式,它允许类在表达式中使用。这在某些情况下非常有用,例如模块内的类定义。

const MyClass = class Me {  // 在 class Me 中,可以使用 Me 作为引用  static method() {    console.log(Me.name);  }};// 外部使用 MyClass 来访问类MyClass.method(); // 输出:未定义 Me.name

类表达式是一个更灵活的选择,适用于特定场景。


严格模式(strict mode)

严格模式是 JavaScript 中的一个重要的编程模式,它通过 use strict 关键字开启。在 strict 模式下,某些动作会被限制或抛出错误。以下是 strict 模式的特点:

  • 变量提升:严格模式下不存在变量提升。
  • 严格键检查:某些操作(如 delete)可能会抛出错误。
  • 行末不允许:严格模式要求代码块以 } 结束。
  • 严格参数访问:函数参数的访问严格遵循它的定义。

  • strict 模式的影响

    对变量的影响

    • 必须先声明变量再使用。
    • 不允许使用保留字或关键字作为变量名。
    • delete 操作符将抛出错误。

    对对象的影响

    • 只读属性不可修改会抛出错误。
    • 不可配置的属性无法使用 delete
    • 不可扩展的对象无法添加新属性。

    对函数的影响

    • 不允许使用 this 引指当前 window 对象。
    • 参数必须唯一,重复的参数会抛出错误。
    • arguments 对象与函数参数的值独立。

    注意事项

  • 默认严格模式:从 ES6 开始,JavaScript 的默认模式就是严格模式。
  • 不存在变量提升:严格模式下不会有变量自动提升。
  • 模块和类默认严格模式:类和模块默认启用严格模式。
  • 代码高效性:严格模式通常会提高代码的编译和执行效率。

  • 通过以上知识,我们可以更好地理解和使用 JavaScript 的类和严格模式。在实际开发中,合理地使用这些概念可以使代码更加规范和可维护。

    转载地址:http://bawiz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现sieveOfEratosthenes埃拉托色尼筛法求素数算法 (附完整源码)
    查看>>
    Objective-C实现SinglyLinkedList单链表算法(附完整源码)
    查看>>
    Objective-C实现skew heap倾斜堆算法(附完整源码)
    查看>>
    Objective-C实现Skip List跳表算法(附完整源码)
    查看>>
    Objective-C实现slack message松弛消息算法(附完整源码)
    查看>>
    Objective-C实现slow sort慢排序算法(附完整源码)
    查看>>
    Objective-C实现tanh函数功能(附完整源码)
    查看>>
    Objective-C实现z-algorithm算法(附完整源码)
    查看>>
    Objective-C实现zellers congruence泽勒一致算法(附完整源码)
    查看>>
    Objective-C实现Zero One Knapsack零一背包计算算法(附完整源码)
    查看>>
    Objective-C实现一个Pangram字符串至少包含一次所有字母算法(附完整源码)
    查看>>
    Objective-C实现一个通用的堆算法(附完整源码)
    查看>>
    Objective-C实现一分钟倒计时(附完整源码)
    查看>>
    Objective-C实现三次样条曲线(附完整源码)
    查看>>
    Objective-C实现上传文件到FTP服务器(附完整源码)
    查看>>
    Objective-C实现两数之和问题(附完整源码)
    查看>>
    Objective-C实现中文模糊查询(附完整源码)
    查看>>
    Objective-C实现串口通讯(附完整源码)
    查看>>
    Objective-C实现串逐位和(附完整源码)
    查看>>
    Objective-C实现主存储器空间的分配和回收(附完整源码)
    查看>>