Soo*_*ead 9 javascript prototype function object
会有很多问题需要澄清,所以我会尝试用数字标记它们,以便更容易回应它.
最近我一直在研究javascript.有一个主题是"一切都是对象".
在我的"javascript解释"中,这意味着在其原型链的开头,一切都有"对象".它是否正确?
但是,我们的基本类型(string,number,boolean,null,undefined)?他们是对象吗?我可以打个电话"aaa".length.这是如何运作的?
函数是根据此实现[[Call]]的对象 .那是什么意思?(我认为这是关于fun.call(这个,arg1)的东西,但帮助我理解这一点.
还有typeof运营商.我之前已将其与MDN联系起来,但有些事情令人困惑.
typeof "aaa" === "string"和typeof String("aaa") === "string".这似乎是可以预料的,但String("aaa")会返回什么?我猜它以某种方式解析输入并从中返回一个字符串原语.它是否正确?
typeof new String("aaa") === "object"什么?请向我解释其原型链.我在哪个原型和哪个原型上有"aaa"原始字符串值?它有什么不同typeof String("aaa")?
我已经阅读并观看了很多关于这个主题的内容,我认为我需要澄清这些内容.
同样在你的答案中,如果你链接一个外部资源,请总结它的重要部分,并说明它的含义,因为我一直在阅读ecmascript规范,它们很长:).
此外,如果javascript的版本有所不同,请说明.
And*_*y E 13
1 \在我的"javascript解释"中,这意味着在它的原型链的开头,一切都有"对象".它是否正确?
是的,不是.默认情况下,所有对象都继承自Object.使用ES5可能Object.create有一个不继承的对象Object,但它仍然是一个对象.
2 \但原始类型(字符串,数字,布尔值,空值,未定义)怎么样?他们是对象吗?我可以称之为"aaa".length.这是如何运作的?
误解一切都是JavaScript中的对象.基元不是对象,但可以转换为对象.使用.运算符时,左操作数将转换为对象(如果可能).
3 \功能是根据此实现[[Call]]的对象.那是什么意思?(我认为这是关于fun.call(这个,arg1)的东西,但帮助我理解这一点.
[[Call]]是ECMAScript实现用于将对象标记为函数的内部方法.它与它没有直接关系Function.prototype.call,它本身也是一个标有的功能[[Call]].见13.2.1 [[Call]].
4\typeof"aaa"==="string"和typeof String("aaa")==="string".这似乎是可以预料的,但String("aaa")会返回什么?我猜它以某种方式解析输入并从中返回一个字符串原语.它是否正确?
String(),当不用作构造函数时,将其参数转换为字符串基元.所以String("aaa")是一样的"aaa".toString().在这种情况下,这是多余的和不必要的.
5\typeof new String("aaa")==="对象"什么?请向我解释它的原型链.我在哪个原型和哪个原型上有"aaa"原始字符串值?它与typeof String("aaa")有何不同?
String()用作构造函数返回一个继承自的对象String(),正如您所期望的那样.字符串基元和字符串对象之间存在差异.
当您对某些事情感到困惑时,几乎所有问题都可以通过阅读规范来解答.为方便起见,在线提供了带注释的规范版本.