博客
关于我
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/

    你可能感兴趣的文章
    Python Selenium实现自动化测试及Chrome驱动使用!
    查看>>
    Python Selenium搭建UI自动化测试框架
    查看>>
    Python Selenium模块详解
    查看>>
    Python selenium爬取影评生成词云图
    查看>>
    python selenium自动化测试报告
    查看>>
    Python selenium自动化测试框架实战 —— 登录测试案例
    查看>>
    Python Selenium设计模式 —— POM
    查看>>
    Python Serial:如何使用 read 或 readline 函数一次读取多个字符
    查看>>
    Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
    查看>>
    Python setup.py:数据文件无法复制目录:不存在或不是常规文件
    查看>>
    Python setuptools sdist:仅安装版本化文件
    查看>>
    Python Shell下使用matplotlib
    查看>>
    Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
    查看>>
    python socket分包发送数据
    查看>>
    python socket模块_Python socket模块实现TCP服务端客户端
    查看>>
    Python SOCKS5代理客户端HTTPS
    查看>>
    Python Soc网络分析:通过使用函数迭代列表来计算机会网络
    查看>>
    Python SQL和NoSQL数据库操作实战
    查看>>
    python stdout flush_sys.stdout.flush()方法的用法
    查看>>
    python string 运算
    查看>>