问题描述
我是 JavaScript 的新手,现在已经学习了一周。我申请了不同公司的实习机会,昨天接到电话面试。他们问了我一些问题,对于这个特定的问题,我一无所知。有人可以为我提供解决方案或帮助我澄清这个代理主题。
这个问题的答案是什么?
请编写一个简单的日志函数,将字符串参数代理到 console.log() *
解决方法
如果我被问到这个问题,我会理解“这将代理一个字符串”意味着“将传递一个字符串......以受控方式” .维基百科写到 Proxy pattern:
代理设计模式可以解决哪些问题?
- 应该控制对对象的访问。
- 访问对象时应提供其他功能。
因此,在这种情况下,您将验证参数是字符串,或者另一种解释可能是您将非字符串转换为字符串,然后再将其传递给 console.log
。所以我认为以下两个答案都可以:
function log(str) {
if (typeof str !== "string") throw new TypeError("log should not be called with a non-string");
console.log(str);
}
log("hello");
或者:
function log(str) {
if (typeof str !== "string") str = JSON.stringify(str);
console.log(str);
}
log(["an","array"]);
**
function log(){
console.log(...arguments);
}
log("a","b")
**