为什么返回此结果会导致对象
Why does returning this result in an object?
有人可以向我解释这种行为吗?
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
是对原始基元值的引用。
相关文章:
- 对象拟合:获取结果尺寸
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- JQuery Deferred Ajax,将结果保存在调用对象中
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- 返回带有筛选结果的新JSON对象
- 使用函数for循环遍历对象以更改值,然后返回结果
- 为什么纬度结果对象从谷歌地图 API 更改
- 意外结果,在 ASP.Net 中解析 JSON 对象的数组
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- 用逗号分隔返回结果中的对象
- jQuery 循环 JSON 结果,对象作为值
- 正在调用对象中设置的匿名函数,但未得到预期结果
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 剑道角's自动完成在结果中显示对象
- 使用lodash'扩展JS对象实例;s的extend方法会导致奇怪的结果
- 从 $.post() 获取 JSON 对象结果
- 使用 JavaScript 将多个对象结果集的数组合并到单个数组中
- 有选择地返回JSON对象结果
- Json字符串javascript对象结果不匹配
- 提取 JSON 对象结果的某些部分