Skip to content

Instantly share code, notes, and snippets.

View mikepenzin's full-sized avatar

Mike Penzin mikepenzin

  • Haifa, Israel
View GitHub Profile
@mikepenzin
mikepenzin / prototypal-OOP-patterns.js
Last active December 18, 2017 08:22
Pseudo classical inheritance and Prototypical OOP in JavaScript
"use strict";
var Person = {
init: function(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
return this;
},
fullName: function() {
return this.firstName + " " + this.lastName;
@mikepenzin
mikepenzin / calculator.html
Last active December 7, 2017 20:07
simple js calculator
<html>
<title>CalculatorJS</title>
<style>
body {
color: #412a0f;
}
.calculator {
width: 20%;
margin: 0 auto;
@mikepenzin
mikepenzin / DateTimeDiffer.js
Last active March 18, 2017 20:58
Easy calculate how much time passed since update/creation
var createdTime ="Sat Dec 12 2016 18:04:54 GMT+0000";
(function DateTimeDifference( previousTime ) {
var today = Date.now();
previousTime = Date.parse(previousTime);
var seconds = (today - previousTime) / 1000;
var hours = parseInt( seconds / 3600 );
seconds = seconds % 3600;
var minutes = parseInt( seconds / 60 );
if(minutes < 60 && hours === 0) {
@mikepenzin
mikepenzin / calc.js
Created March 14, 2017 10:53
Calculator Library
function Calculator(num){
return {
answer : num ? num : 0,
equals : function() {
return this.answer
},
add : function(num) {
this.answer += num ? num : 1
return this
},
@mikepenzin
mikepenzin / prototyping.js
Created March 3, 2017 10:18
Prototyping Patterns
// 1. Init method
var Person = {
init: function(firstName, lastName){
this.firstName = firstName;
this.lastName = lastName;
return this;
},
full_name: function(firstName, lastName){
return this.firstName + " " + this.lastName;
@mikepenzin
mikepenzin / checknan.js
Last active April 7, 2017 18:16
Reliably test if a value is equal to NaN
function checkNaN(n){
return (n !== n) ? true : false;
}
/*
If we will use regular "isNaN":
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN('123ABC'); // true
@mikepenzin
mikepenzin / traverse.js
Created February 28, 2017 17:47
Depth-First-Search algorithm
// Create a function that, given a DOM Element on the page,
// will visit the element itself and all of its descendents
// (not just its immediate children). For each element visited,
// the function should pass that element to a provided callback function.
// The arguments to the function should be:
// a DOM element
// a callback function (that takes a DOM element as its argument)
@mikepenzin
mikepenzin / thiskey.js
Created February 28, 2017 15:04
Call / Apply / Bind functions examples.
// Generally speaking: stabilizing the "this" keyword.
var person = {hi: "Hello"};
function showFullName(pep) {
console.log (this.hi);
}
showFullName.call(person);
// Output: Hello
@mikepenzin
mikepenzin / factorial.js
Created February 28, 2017 15:03
Function will output the value of factorial.
// f(0); // Outputs 0
// f(5); // Outputs 120
function f(n) {
// ? stands for if statement - if n = 1 or less will return - n. if n > 1, then n * f(n-1)
// f(n); is recursion function
return ((n > 1) ? n * f(n-1) : n)
}
@mikepenzin
mikepenzin / integer.js
Last active February 28, 2017 19:02
Function isInteger(x) that determines if x is an integer.
// isInteger(3); // Outputs true
// isInteger("5"); // Outputs false
// isInteger("car"); // Outputs false
function isInteger(x) {
// ^ stands for XOR so every integer with (4^0) will give integer itself. Every string will give 0
return (x^0) === x;
}
// Another solution