阿里面试题:有关对象和包装类

94 阅读1分钟

对象和包装类知识点讲解文章见探析JS中的对象和包装类 - 掘金 (juejin.cn)

题目:

var str = 'abc'
str += 1
var test = typeof(str)
if (test.length == 6) {
  test.sign = 'typeof 的返回结果是String'
}
console.log(test.sign); 

解析:

  1. 通过字面量'abc'创建字符串变量str
  2. str = str + 1 发生了隐式类型转换,str最终值为'abc1'
  3. str仍为一个字符串,所以test值为string;相当于通过字面量'string'创建了字符串变量test
  4. 进入if条件语句中,test发生了类的包装的隐式过程:v8引擎将test看成一个对象添加sign属性,在访问该属性前v8又意识到用户创建的test应该为一个原始类型数据,所以又把sign属性删掉,访问一个对象身上不存在的属性,打印出undefined
new String('string').sign = 'typeof 的返回结果是String'
delete String('string').sign
console.log(num.abc);