《JavaScript高级程序设计》中的内置对象和本地对象的理解?
本书中将我们常用的:Object,Array,Function,String等列为本地对象,而把Global和Math单独提出来归为“内置对象”,并且说根据定义内置对象也是本地对象。但是,很多资料中把前两者统称为“内置对象”。
不是纠结定义,而是因为我发现当我们使用Global和Math的方法和属性的时候是不需要实例化的,例如我们直接使用Math.min(),eval(),等方法,但是其他对象(包括我们自己创建的对象)的使用则需要实例化以后才有效。请大家帮我回答下面几个问题(任意一个都可以):
问题一
请各位技术前辈辨别我的说法是否准确无误,如有错误请您指正;
问题二
请问你是怎样理解内置对象的?
问题三
《JavaScript高级程序设计》这本书该怎么看?有很多问题都解释的不是很清楚,作为一个JavaScript这门语言的初学者,请推荐一些参考资料。书中提到的定义和标准的最新版本哪里可以查看?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不知道你在哪里看到有将
Object
等列为本地对象的说法,至少我在这本书的英文原版中没有找到。不过原版中确实提到 Global 和 Math 是“内建(built-in)”的,但不是单纯的内建对象,而是“Singleton Built-in Objects”,也就是内建的单例模式的对象。原版中称 Object, Array, Date, RegExp, Function, Boolean, Number, String 为“Reference Types(引用类型)”,并且特别说明“引用类型”特别容易与“类”混淆,所以书中后面的部分不会再用“类”这个术语。
内置对象,也就是内建(built-in)对象,就是语言环境本身提供的对象,不需要再通过其它途径(比如引用第3方库之类)去获得,所以没啥特别的意思,就是告诉你这些个东西直接可以用而已。
Global
和Math
是对象,不是类型,所以不能生成实例,而是可以直接使用。问题中提到的另外几种属于类型,也有它们自己的静态方法可以使用,比如Object.keys
,但多数时候会使用这些类型的对象。如果你觉得很多地方解释不清楚,那也许是翻译得并不准确。建议你直接看英文原版。
JavaScript的标准是ECMA-262,参考 Standard ECMA-262。目前最新的标准是 ECMAScript 2015,也即 ECMAScript 6,就是我们平常说的 ES6。
个人觉得说得有点乱。Global在window中是全局变量(全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象;这个对象只存在一份,它的属性在程序中任何地方都可以访问,全局对象的生命周期终止于程序退出那一刻),但他不能直接访问,可以通过window间接访问,如使用window.Math和使用Math是一样的,通常我们把window省略了。其他的还有String、Date、parseInt,都是是全局对象的属性,等同于属性初始化,直接使用就可以了。
《JavaScript高级程序设计》是值得看,最重要的是前7章(包括历史)。看完这些我就去看汤姆大叔的深入理解JavaScript系列,地址在这:http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html,大叔讲了好多书本上没讲的内容,等你看完回来看书,好多不理解的全都通了。
大叔的那个系列有一定的难度,特别是其中的10到16章,有些难理解,我看了有做笔记包括自己的理解,你可以参考着看:http://my.oschina.net/Karon
我还买了几本书:《JavaScript DOM编程艺术》(这本在《JavaScript高级程序设计》前面看的,简单粗暴易懂,不过不是很透彻),《JavaScript高级程序设计》,《JavaScript设计模式》,《JavaScript语言精粹》,《JavaScript函数式编程》,《编写可维护的JavaScript》,《数据结构与算法JavaScript描述》... 基本上就等于横扫动物书了,目前在看《JavaScript设计模式》。。。。补充:刚出不久的《你不知道的JavaScript 上卷》讲得很透彻明白(内容或许是你感兴趣的作用域和闭包,this,原型)
感觉前人的肩膀还是要站站的,因为读原文档也是有理解不透的时候。
我只能说这本书算是讲的最好的了,没事多看几遍