类的封装与实例化

JavaScript 类的封装与实例化

JavaScript 是强大的面向对象的编程语言,不过不同于很多传统的编程语言,JavaScript 使用了基于原型链的 OOP 模型;同时,JavaScript 将函数也视作一等对象,也导致了很多开发者可能陷入迷惑。而在面向对象的学习中,我们会考虑命名空间、类的声明、构造函数、对象实例化、类继承等内容。

传统的类实现

命名空间

面向对象编程的一大特性就是类的封装性,能够避免来自全局命名空间的冲突;在传统的类实现中,我们常用命名空间的模式来进行类封装,Essential JavaScript Namespacing Patterns 一文中 AddyOsmani 就为我们详细介绍了多种 JavaScript 命名空间模式。最简单的嵌套命名空间范式就是使用 Object Literal 来将函数、变量打包到某个唯一的命名下:

MyApp.users = {
    // properties
    existingUsers: [...],
    // methods
    renderUsersHTML: function() {
      ...
    }
};

构造函数

function User( name, email ) {
  // properties
  this.name = name;
  this.email = email;
  // methods
  this.sayHey = function() {
   console.log( Hey, Im  + this.name );
  };
}
// instantiating the object
const steve = new User( Steve, steve@hotmail.com );
// accessing methods and properties
steve.sayHey();

ES6 Class

上一页
下一页