js创建类 function和class方式有什么不同嘛?

求解释 因为我开始学的时候就是直接学的es6,一直都是用ES6的class方式,function没怎么使用过。

阅读 6.5k
3 个回答

ES6 的class可以看作只是一个语法糖

//定义类
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}

与下列方式等价

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
  return '(' + this.x + ', ' + this.y + ')';
};

早年JS没有class语法,所以创建对象使用new (function)的方式来实现。
现在出了classextends语法,就是帮助快速构建一个对象,而不需要手动去指定各种prototype之类的东西。
可以认为class是一个语法糖,因为他的功能不使用class关键字完全可以实现

我说下个人理解吧,但我对 js 这块不是很熟,也没有看过相关书籍,只能说是个人的片面了解理解与积累。
js 中 class 和 function 其实并没有区别,因为当你在使用过程中,你会发现,不管是你想定义一个 class 还是定义一个 function ,其实最终的使用都是一样的。new 调用,因为 function 它既是一个方法也是一个对象,而 class 是一个对象,也是方法的结合体。function 内部可以使用对象的特性,为它自身创建新的方法,新的属性进行调用。而 class 更不用说了。
个人觉得,如果非要区分,那应该是封装的合理性(方便维护,方便使用),问题了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题