重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
function showCase(value){
switch(value){
case 'A':
console.log('case A');
break;
case 'B':
console.log('case B');
break;
case undefined:
console.log('undefined');
break;
default:
console.log('Do not know');
}
}
showCase(new String('A'));
function f(){}
const a = f.prototype,
b = Object.getPrototypeOf(f);
console.log(a===b);
console.log(typeof null)
console.log(null instanceof Object)
公众号【今天也要写bug】更多前端面试题
创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为萨嘎企业提供专业的网站制作、成都做网站,萨嘎网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
// 答案:Do not know
// 考察基本字符串、字符串对象和 switch
// 字符串字面量是 string 类型
// 字符串对象是 object 类型
// switch 使用严格运算符(===)来进行比较
// 在下面 switch case 没有匹配的 case,因此走的是 default
function showCase(value) {
switch (value) {
case "A":
console.log("case A");
break;
case "B":
console.log("case B");
break;
case undefined:
console.log("undefined");
break;
default:
console.log("Do not know");
}
}
showCase(new String("A"));
// 答案:false
// 考察原型链
// 函数本身也是对象
// 函数作为对象,是new Function 构造函数产生的,所以 f.__proto__ => Function.prototype
// 函数的 f.prototype 则默认是一个空对象,和 f.__proto__ 没有关系
function f() {}
const a = f.prototype,
b = Object.getPrototypeOf(f);
console.log(a === b);
// Object.getPrototypeOf 方法返回对象的原型对象即 f.__proto__
// f.prototype 不等于 f.__proto__
// 最终输出 false
// 答案:object false
// 考察 typeof、instanceof、原型链
console.log(typeof null); // 记住就好了 typeof null 为 object
console.log(null instanceof Object);
// instanceof运算符用于检测构造函数(右边)的 prototype 属性是否出现在实例对象(左边)的原型链上
// null 是原型链的终点,Object.prototype 当然不会出现在 null 的原型链上