Challenge 1 — Solution Task: Write a plain function introduce(role) that logs `${this.name} works as a ${role}`. Create two different objects, each with a name property, and use call() to invoke introduce with each object as this, passing a different role string each time. function introduce(role) { console.log(`${this.name} works as a ${role}`); } const alice = { name: "Alice" }; const bob = { name: "Bob" }; introduce.call(alice, "developer"); introduce.call(bob, "designer"); Expected output: Alice works as a developer Bob works as a designer Notes: - introduce is never attached to alice or bob as a method — call() is what supplies this for that one invocation, entirely separate from how the function was defined. - The first argument to call() is always the value for this; any further arguments (here, role) are passed through to the function normally, in order. - introduce itself has no idea in advance which object it will be called with — that's decided fresh at each call() invocation.