博客
关于我
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 中一种简洁的方式来为对象定义可读且 обратисим的属性。与传统的 getter 和 setter不同,属性表达式可以直接在类定义时定义。

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/

    你可能感兴趣的文章
    python函数
    查看>>
    python----线程、进程、协程的区别及多线程详解
    查看>>
    python---5
    查看>>
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>
    Python-numpy(2)数组的操作
    查看>>
    Python-Numpy的tile函数用法
    查看>>
    python-open函数
    查看>>