新字符串的类型(“aaa”)==;对象“;?一切事物都是一个对象,但也有原始类型

typeof new String("aaa") === "object"? Everything is an object, but there are primitive types?

本文关键字:类型 一个对象 原始 对象 字符串 aaa 一切事      更新时间:2023-09-26

会有很多问题需要澄清,所以我会尝试用数字标记它们,以便更容易回答。

最近我一直在学习javascript。有一个主题是关于";一切都是物体";。

  1. 在我的";javascript的解释";这意味着一切都有";对象";在其原型链的开端。这是正确的吗?

  2. 但是基元类型(stringnumberbooleannullundefined)呢?它们是物体吗?例如,我可以调用"aaa".length。这是怎么回事?

  3. 函数是根据此实现[[Call]]的对象。这是什么意思?(我觉得这很有趣。调用(thisarg1),但请帮助我理解这一点。

    还有typeof运算符。我以前从MDN链接过它,但有些事情令人困惑。

  4. 8和CCD_ 9。这似乎是意料之中的事,但String("aaa")返回的是什么?我猜它会以某种方式解析输入,并从中返回一个字符串原语。这是正确的吗?

  5. typeof new String("aaa") === "object"什么?请向我解释一下它的原型链;aaa";基元字符串值?它与typeof String("aaa")有何不同?

我读了很多关于这个主题的东西,我想我需要澄清这些。

同样在你的回答中,如果你链接了一个外部资源,请总结它的重要部分,并说明它的含义,因为我一直在阅读ecmascript规范,它们很长:)。

此外,如果javascript的版本存在差异,请说明这一点。

1''在我的"javascript解释"中,这意味着一切都在原型链的开头有"对象"。这是正确的吗?

是和否。默认情况下,所有对象都继承自Object。使用ES5的Object.create,可以有一个不继承自Object的对象,但它仍然是对象。

2''但是基元类型(字符串、数字、布尔值、null、未定义)呢?它们是物体吗?例如,我可以称之为"aaa"长度。这是怎么回事?

在JavaScript中,一切都是一个对象,这是一种误解。基本体不是对象,但它们可以转换为对象。使用.运算符时,左操作数将转换为对象(如果可能)。

3''函数是根据此实现[[Call]]的对象。这是什么意思?(我觉得这很有趣。打电话给(这个,arg1),但帮我理解一下。

[[Call]]是ECMAScript实现用来将对象标记为函数的内部方法。它与Function.prototype.call没有直接关系,CCD_17本身也是一个用[[Call]]标记的函数。参见13.2.1[[呼叫]]

4'' typeof"aaa"==="string"和typeof string("aaa")==="字符串"。这似乎是意料之中的事,但String("aaa")返回的是什么?我猜它会以某种方式解析输入,并从中返回一个字符串原语。这是正确的吗?

String()在不用作构造函数时,会将其参数转换为字符串基元。因此CCD_ 20与CCD_。在这种情况下,这是多余和不必要的。

5''typeof new String("aaa")==="object"什么?请向我解释一下它的原型链。我在哪里以及在哪个原型上有"aaa"原始字符串值?它与字符串类型("aaa")有何不同?

用作构造函数的String()返回一个继承自String()的对象,正如您所期望的那样。字符串基元和字符串对象是有区别的。

当你对某件事感到困惑时,几乎所有的问题都可以通过阅读说明书来回答。为了方便起见,有一个注释版本的规范可在线获取。

1''在我的"javascript解释"中,这意味着一切都有"对象"在其原型链的开头。这是正确的吗?

答:不,正如你在问题2中所说,也有原始类型。

2''但是基元类型(字符串、数字、布尔值、null、,未定义)?它们是物体吗?例如,我可以称之为"aaa"长度。怎样这样行吗?

答:不,它们是基本类型,而不是对象。当您调用"aaa".length时,JavaScript将自动将字符串基元包装到string对象并调用该方法或执行属性查找。

3''函数是根据此实现[[Call]]的对象。什么这意味着什么?(我觉得这很有趣,arg1),但请帮助我理解这一点。

答:JavaScript中的每个函数实际上都是一个function对象。

4'' typeof"aaa"==="string"和typeof string("aaa")==="字符串"。这似乎是意料之中的事,但String("aaa")返回的是什么?我猜测它以某种方式解析输入,并从是的。这个对吗?

Ans:String("aaa")返回一个基元字符串。

5''typeof new String("aaa")==="object"什么?请解释一下原型链。我在哪里以及在哪个原型上有"aaa"基元字符串值?它与typeof有何不同字符串("aaa")?

Ans:new String("aaa")返回一个String对象。

相关文章: