前端-JS基础之面向对象

本文详细介绍了JavaScript中的Class,包括其用法、严格模式、constructor、Class表达式、私有方法和属性、原型属性、静态方法、get和set以及继承。讲解了如何使用super关键字,以及如何判断类的继承关系,帮助开发者深入理解JS面向对象编程。
摘要由CSDN通过智能技术生成

Class

用法

class跟let、const一样:不存在变量提升、不能重复声明…

es5面向对象写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

//es5
function Fn(x, y) {
   
  this.x = x;
  this.y = y;
}

Fn.prototype.add = function () {
   
  return this.x + this.y;
};
//等价于
//es6
class Fn{
   
  constructor(x,y){
   
    this.x = x;
    this.y = y;
  }
  
  add(){
   
    return this.x + this.y;
  }
}

var F = new Fn(1, 2);
console.log(F.add()) //3

构造函数的prototype属性,在 ES6 的“类”上面继续存在。事实上,类的所有方法都定义在类的prototype属性上面。

class Fn {
   
  constructor() {
   
    // ...
  }

  add() {
   
    // ...
  }

  sub() {
   
    // ...
  }
}

// 等同于

Fn.prototype = {
   
  constructor() {
   },
  add() {
   },
  sub() {
   },
};

类的内部所有定义的方法,都是不可枚举的(non-enumerable),这与es5不同。

//es5
var 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值