Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么返回这个结果会产生一个对象?_Javascript - Fatal编程技术网

Javascript 为什么返回这个结果会产生一个对象?

Javascript 为什么返回这个结果会产生一个对象?,javascript,Javascript,有人能给我解释一下这种行为吗 Object.prototype.getThis = function () { return this; }; var s = "some text"; console.log(s.getThis()); // [String 'some text'] console.log(typeof s.getThis()) // object 为什么获取此返回一个对象?当您将字符串原语值当作对象使用时,JavaScript会隐式地从中创建一个字符串实例。好像是你

有人能给我解释一下这种行为吗

Object.prototype.getThis = function () {
  return this;
};

var s = "some text";

console.log(s.getThis()); // [String 'some text']
console.log(typeof s.getThis()) // object

为什么
获取此
返回一个
对象

当您将字符串原语值当作对象使用时,JavaScript会隐式地从中创建一个字符串实例。好像是你写的

console.log(new String(s).getThis().toString());
基本值不是对象。但是,所有基本类型都有内置的对象包装类型,这些包装类型是各种方法(如
.charAt()
.trim()
.slice()
)所在的位置


edit-@Bergi在一篇评论中指出,在“严格”模式下,运行时仍然会从字符串和对象原型中查找方法,就好像正在创建字符串实例一样,但调用这些方法时,
是对原始原语值的引用。

,因为字符串是object@AbdelrhmanMohamed字符串实例是对象,但字符串基元不是对象。因为sloppy模式。@Bergi在strict模式下不会发生同样的事情吗?@Pointy::-)strict方法的基元的值不是100%准确。方法(来自对象)仍然会在原语上被调用,
thisArg
是原语value@Bergi那是2015年的事,对吗?因此,它不是假装合成一个字符串实例并让它去做,而是做一些奇怪的事情,调用字符串或对象原型方法,并将
这个
绑定到原始原语?不,一直都是这样。我的意思是,自从严格模式被引入以来。@Bergi说的“ES2015”基本上是指“新式”。有意义,并且没有“拳击”对象那么怪异。