以下是一些体现"JavaScript 忍者"技巧的代码片段,这些代码展示了JavaScript的高级用法和巧妙技巧:
(function(ninja) {
console.log(ninja + " is stealthy!");
})("JavaScript");
// 输出: JavaScript is stealthy!
function createNinja() {
let stealth = 100;
return {
getStealth: () => stealth,
train: () => { stealth += 10; },
attack: () => { stealth -= 5; }
};
}
const jsNinja = createNinja();
jsNinja.train();
console.log(jsNinja.getStealth()); // 110
const ninjaGreeting = (name) => (weapon) =>
`${name} attacks with ${weapon}!`;
const naruto = ninjaGreeting("Naruto");
console.log(naruto("shuriken")); // "Naruto attacks with shuriken!"
const withNinjaSkills = (fn) => (...args) => {
console.log("Stealth mode activated...");
const result = fn(...args);
console.log("Disappearing in smoke...");
return result;
};
const calculate = (a, b) => a + b;
const ninjaCalculate = withNinjaSkills(calculate);
console.log(ninjaCalculate(2, 3));
// Stealth mode activated...
// Disappearing in smoke...
// 5
Array.prototype.shuriken = function() {
return this.map(item => item + " hit!");
};
console.log([1, 2, 3].shuriken()); // ["1 hit!", "2 hit!", "3 hit!"]
const ninja = {
name: "Hattori",
clan: "Iga",
weapons: ["katana", "shuriken", "smoke bomb"]
};
const { name: ninjaName, weapons: [primaryWeapon, ...otherWeapons] } = ninja;
console.log(`${ninjaName} prefers ${primaryWeapon}`);
// Hattori prefers katana
function ninjaCountdown(n) {
return n > 0 ? (console.log(n + "..."), ninjaCountdown(n - 1))
: console.log("Attack!");
}
ninjaCountdown(3);
// 3...
// 2...
// 1...
// Attack!
const ninja = {
name: "Hanzo",
skills: ["stealth", "espionage"]
};
const invisibleNinja = new Proxy(ninja, {
get(target, prop) {
return prop in target ? target[prop] : "Nothing to see here...";
}
});
console.log(invisibleNinja.name); // "Hanzo"
console.log(invisibleNinja.age); // "Nothing to see here..."
注意:这些"忍者"技巧虽然有趣,但在生产代码中应谨慎使用,优先考虑代码的可读性和可维护性。真正的JavaScript忍者知道何时使用高级技巧,何时保持代码简单明了。