为什么将此结果返回到对象中?

时间:2016-03-19 22:03:10

标签: javascript

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

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

1 个答案:

答案 0 :(得分:3)

当您使用字符串原始值时,就像它是一个对象一样,JavaScript会从中隐式创建一个String实例。就像你写的那样

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

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

编辑 - @Bergi在注释中指出,在“严格”模式下,运行时仍然从String和Object原型中找到方法,就像一个String实例一样正在创建,但调用方法使this是对原始原始值的引用。