MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 69 lines 2.2 kB view raw
1// Demonstrate that functions are objects and have __code property 2 3// Basic function 4function greet(name) { 5 return "Hello, " + name + "!"; 6} 7 8// Functions are objects - we can add properties to them 9greet.callCount = 0; 10greet.description = "A greeting function"; 11 12// Accessing function properties 13console.log("Function name: " + greet.name); 14console.log("Description: " + greet.description); 15 16// The __code property contains the function's bytecode/implementation 17console.log("\n--- Function __code property ---"); 18console.log("greet.__code: " + greet.__code); 19console.log("Type of __code: " + typeof greet.__code); 20 21// We can call the function normally 22let result = greet("World"); 23console.log("\nCalling greet('World'): " + result); 24 25// Demonstrate with a more complex function 26function fibonacci(n) { 27 if (n <= 1) { 28 return n; 29 } 30 return fibonacci(n - 1) + fibonacci(n - 2); 31} 32 33fibonacci.purpose = "Calculate Fibonacci numbers"; 34fibonacci.complexity = "O(2^n) - exponential"; 35 36console.log("\n--- Another function example ---"); 37console.log("Function: " + fibonacci.name); 38console.log("Purpose: " + fibonacci.purpose); 39console.log("Complexity: " + fibonacci.complexity); 40console.log("fibonacci.__code: " + fibonacci.__code); 41 42// Call it 43console.log("fibonacci(7) = " + fibonacci(7)); 44 45// Functions can be stored in objects 46let mathOps = { 47 add: function(a, b) { return a + b; }, 48 multiply: function(a, b) { return a * b; } 49}; 50 51console.log("\n--- Functions as object properties ---"); 52console.log("mathOps.add: " + mathOps.add); 53console.log("mathOps.add.__code: " + mathOps.add.__code); 54console.log("mathOps.add(5, 3) = " + mathOps.add(5, 3)); 55 56// Functions can be assigned to variables 57let myFunc = greet; 58myFunc.newProperty = "Added to the reference"; 59 60console.log("\n--- Function assignment ---"); 61console.log("myFunc === greet: " + (myFunc === greet)); 62console.log("myFunc.__code: " + myFunc.__code); 63console.log("myFunc('Alice'): " + myFunc('Alice')); 64 65// Anonymous function 66let anon = function(x) { return x * 2; }; 67console.log("\n--- Anonymous function ---"); 68console.log("anon.__code: " + anon.__code); 69console.log("anon(21) = " + anon(21));