JavaScript Classes

Last updated: October 15, 2024

Workshop Intro

The newest way to encapsulate code in JavaScript (or just an alternate syntax for the way we already had)

  1. object.js ๐Ÿ”’
    const todoObject = {
    
    	todos: [],
    	count: 0,
    
    
    	add: function(content) {
    		const todo = {
    			id: this.count++,
    			content: content,
    		};
    		this.todos.push(todo);
    	},
    
    	listTodos(todos) {
    		this.todos.forEach( function(todo) {
    			console.log(todo);
    		});
    	},
    
    };
    
    todoObject.add("Go for a run");
    todoObject.add("Play tennis");
    todoObject.listTodos();
  2. constructor.js ๐Ÿ”’
    function TodoConstructor() {
    
    	this.todos = [];
    	this.count = 0;
    
    	this.add = function(content) {
    		const todo = {
    			id: this.count++,
    			content: content,
    		};
    		this.todos = [...this.todos, todo];
    	};
    
    	this.listTodos = function(todos) {
    		this.todos.forEach( function(todo) {
    			console.log(todo);
    		});
    	};
    }
    
    var todoConstructor = new TodoConstructor()
    
    todoConstructor.add("Go for a run");
    todoConstructor.add("Play tennis");
    todoConstructor.listTodos();
  3. class.js ๐Ÿ”’
    class TodoClass {
    
    	constructor() {
    		this.todos = [];
    		this.count = 0;
    	}
    
    	add(content) {
    		const todo = {
    			id: this.count++,
    			content: content,
    		};
    		this.todos = [...this.todos, todo];
    	}
    	
    	listTodos(todos) {
    		this.todos.forEach( function(todo) {
    			console.log(todo);
    		});
    	}
    }
    
    var todoClass = new TodoClass()
    
    todoClass.add("Go for a run");
    todoClass.add("Play tennis");
    todoClass.listTodos();

Deliverables

Comparison

See the Pen Comparison by perpetual.education (@perpetual-education) on CodePen.

You can use this to add a few features to each and see how the syntax differs.