为什么返回此结果会导致对象

Why does returning this result in an object?

本文关键字:对象 结果 返回 为什么      更新时间:2023-09-26

有人可以向我解释这种行为吗?

Object.prototype.getThis = function () {
  return this;
};
var s = "some text";
console.log(s.getThis()); // [String 'some text']
console.log(typeof s.getThis()) // object

为什么getThis返回object

当你使用字符串基元值时,就好像它是一个对象一样,JavaScript 会从它隐式创建一个字符串实例。就好像你写了

console.log(new String(s).getThis().toString());

基元值不是对象。但是,所有基元类型都有内置的对象包装器类型,这些包装器类型是各种方法(如.charAt().trim().slice()等)所在的位置。

edit — @Bergi注释中指出,在"严格"模式下,运行时仍然从字符串和对象原型中查找方法,就像正在创建字符串实例一样,但调用方法时this是对原始基元值的引用。