【学习笔记】深入理解js原型和闭包(7)——原型的灵活性
2024-09-06 07:01:55
在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完)。压个啥样,就得是个啥样,不能随便动,动一动就坏了。
而在javascript中,就没有模子了,月饼被换成了面团,你可以捏成自己想要的样子。
首先,对象属性可以随时改动。
对象或者函数,刚开始new出来之后,可能啥属性都没有。但是你可以这会儿加一个,过一会儿在加两个,非常灵活。
在jQuery的源码中,对象被创建时什么属性都没有,都是代码一步一步执行时,一个一个加上的。
其次,如果继承的方法不合适,可以做出修改。
如上图,Object和Array的toString()方法不一样。肯定是Array.prototype.toString()方法做了修改。
同理,我也可以自定义一个函数,并自己去修改prototype.toString()方法。
最后,如果感觉当前缺少你要用的方法,可以自己去创建。
例如在json2.js源码中,为Date、String、Number、Boolean方法添加一个toJSON的属性。
如果你要添加内置方法的原型属性,最好做一步判断,如果该属性不存在,则添加。如果本来就存在,就没必要再添加了。
---------------------------------------------------------------------------
本文已更新到《深入理解js原型和闭包》的目录更多内容可参考《深入理解js原型和闭包》
最新文章
- Effective Python2 读书笔记2
- bash脚本编程之二 字符串测试及for循环
- Hibernate的缓存技术详解
- OpenStack Magnum 项目简单介绍
- Matlab中rand('state',sum(clock))解析
- c语言,volatile
- 从flexible.js引入高德地图谈起的移动端适配
- DCM、PLL、PMCD、MMCM相关
- Ubuntu、deepin 支持 yum
- UI自动化(三)css优先级
- Native、Web App、Hybrid、React Native(简称RN)、Weex 间的异同点。
- Rpgmakermv(12) gacha插件系列
- [Java学习] Java包装类、拆箱和装箱详解
- oracle 取俩个字符串的差集
- Linux命令—tar
- 算法笔记_041:寻找和为定值的多个数(Java)
- 为什么在c语言中使用gets函数是危险的
- Python 数据分析—第八章 画图
- 【HTML基础】表格和表单
- webpack2-webpack.config.js配置
热门文章
- B.大钉骑马走江湖
- HDU3652 B-number —— 数位DP
- Scrapy爬虫报错:ModuleNotFoundError: No module named 'win32api'
- hdu 4022 Bombing(map,multiset)
- receive和process的过程
- Bug: CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: 0.0000 to 0.0000
- insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
- 微信小程序服务类目大坑:特殊行业服务类目所需资质材料
- 【转】Selenium模拟JQuery滑动解锁
- codeforces 126B