有人可以向我解释这种行为吗?
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
?
答案 0 :(得分:3)
当您使用字符串原始值时,就像它是一个对象一样,JavaScript会从中隐式创建一个String实例。就像你写的那样
console.log(new String(s).getThis().toString());
原始值不是对象。但是,所有基本类型都有内置的Object包装器类型,那些包装器类型是各种方法(如.charAt()
,.trim()
,.slice()
等)所在的位置。
编辑 - @Bergi在注释中指出,在“严格”模式下,运行时仍然从String和Object原型中找到方法,就像一个String实例一样正在创建,但调用方法使this
是对原始原始值的引用。