在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完)。压个啥样,就得是个啥样,不能随便动,动一动就坏了。

而在javascript中,就没有模子了,月饼被换成了面团,你可以捏成自己想要的样子。

首先,对象属性可以随时改动。

对象或者函数,刚开始new出来之后,可能啥属性都没有。但是你可以这会儿加一个,过一会儿在加两个,非常灵活。

在jQuery的源码中,对象被创建时什么属性都没有,都是代码一步一步执行时,一个一个加上的。

其次,如果继承的方法不合适,可以做出修改。

如上图,Object和Array的toString()方法不一样。肯定是Array.prototype.toString()方法做了修改。

同理,我也可以自定义一个函数,并自己去修改prototype.toString()方法。

最后,如果感觉当前缺少你要用的方法,可以自己去创建。

例如在json2.js源码中,为Date、String、Number、Boolean方法添加一个toJSON的属性。

如果你要添加内置方法的原型属性,最好做一步判断,如果该属性不存在,则添加。如果本来就存在,就没必要再添加了。

---------------------------------------------------------------------------

本文已更新到《深入理解js原型和闭包》的目录更多内容可参考《深入理解js原型和闭包》

最新文章

  1. Effective Python2 读书笔记2
  2. bash脚本编程之二 字符串测试及for循环
  3. Hibernate的缓存技术详解
  4. OpenStack Magnum 项目简单介绍
  5. Matlab中rand('state',sum(clock))解析
  6. c语言,volatile
  7. 从flexible.js引入高德地图谈起的移动端适配
  8. DCM、PLL、PMCD、MMCM相关
  9. Ubuntu、deepin 支持 yum
  10. UI自动化(三)css优先级
  11. Native、Web App、Hybrid、React Native(简称RN)、Weex 间的异同点。
  12. Rpgmakermv(12) gacha插件系列
  13. [Java学习] Java包装类、拆箱和装箱详解
  14. oracle 取俩个字符串的差集
  15. Linux命令—tar
  16. 算法笔记_041:寻找和为定值的多个数(Java)
  17. 为什么在c语言中使用gets函数是危险的
  18. Python 数据分析—第八章 画图
  19. 【HTML基础】表格和表单
  20. webpack2-webpack.config.js配置

热门文章

  1. B.大钉骑马走江湖
  2. HDU3652 B-number —— 数位DP
  3. Scrapy爬虫报错:ModuleNotFoundError: No module named 'win32api'
  4. hdu 4022 Bombing(map,multiset)
  5. receive和process的过程
  6. Bug: CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: 0.0000 to 0.0000
  7. insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
  8. 微信小程序服务类目大坑:特殊行业服务类目所需资质材料
  9. 【转】Selenium模拟JQuery滑动解锁
  10. codeforces 126B