在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完)。压个啥样,就得是个啥样,不能随便动,动一动就坏了。
而在javascript中,就没有模子了,月饼被换成了面团,你可以捏成自己想要的样子。
首先,对象属性可以随时改动。
对象或者函数,刚开始new出来之后,可能啥属性都没有。但是你可以这会儿加一个,过一会儿在加两个,非常灵活。
在jQuery的源码中,对象被创建时什么属性都没有,都是代码一步一步执行时,一个一个加上的。

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

var obj = {a: 10, b: 20};
console.log(obj.toString()); //[object Object]
var arr = [1, 2, true];
console.log(arr.toString()); //1,2,true

如上图,Object和Array的toString()方法不一样。肯定是Array.prototype.toString()方法做了修改。
同理,我也可以自定义一个函数,并自己去修改prototype.toString()方法。

function Foo(){}
var f1 = new Foo();
Foo.prototype.toString = function(){return 'myName';
}
console.log(f1.toString()); //myName

最后,如果感觉当前缺少你要用的方法,可以自己去创建。
例如在json2.js源码中,为Date、String、Number、Boolean方法添加一个toJSON的属性。

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

深入理解javascript原型和闭包(7)——原型的灵活性相关推荐

  1. 深入理解JavaScript系列:闭包(Closures)

    介绍 本章我们将介绍在JavaScript里大家经常来讨论的话题 -- 闭包(closure).闭包其实大家都已经谈烂了.尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭 ...

  2. JavaScript —— this、闭包、原型、异步

    转载自水歌博客,方便学习,顺便前排观望大佬! JavaScript 是一门原生支持函数式编程范式的.基于原型的面向对象语言,也是一门弱类型动态脚本语言 What's this ? JavaScript ...

  3. 深入理解JavaScript中的闭包

    闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的概念,把它们混为一谈,我希望借这篇文章能够让大家对闭包有一个清晰的认识. 大家都知道变 ...

  4. 十分钟,快速理解JavaScript中的闭包概念

    海阔凭鱼跃,天高任鸟飞.Hey 你好!我是猫力Molly 闭包已经是一个老生常谈的问题了,不同的人对闭包有不同的理解.今天我来浅谈一下闭包,大家一起来就"闭包"这个话题,展开讨论, ...

  5. [译]Javascript中的闭包(closures)

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  6. 深入理解javascript原型和闭包(16)——完结

    之前一共用15篇文章,把javascript的原型和闭包. 首先,javascript本来就"不容易学".不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学java ...

  7. 深入理解javascript原型和闭包(17)——补this

    本文对<深入理解javascript原型和闭包(10)--this>一篇进行补充,原文链接:http://www.cnblogs.com/wangfupeng1988/p/3988422. ...

  8. 深入理解javascript原型和闭包(3)——prototype原型

    既typeof之后的另一位老朋友! prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名.如果它还是您的新朋友,我估计您也是javascript的新朋友. 在咱们的第一节(深入理解 ...

  9. 深入理解JavaScript原型与闭包

    说明 本文为作者学习记录相关笔记及理解,如有不妥之处,请各位读者积极指出, 虽然标题是深入理解,但可能存在许多不够深入的地方,请各位小伙伴不吝赐教 一切都是对象 一切引用类型都是对象,对象是属性的集合 ...

  10. 深入理解javascript原型和闭包(15)——闭包

    前面提到的上下文环境和作用域的知识,除了了解这些知识之外,还是理解闭包的基础. 至于"闭包"这个词的概念的文字描述,确实不好解释,我看过很多遍,但是现在还是记不住. 但是你只需要知 ...

最新文章

  1. 万万想不到,你是这样的“闲鱼”!
  2. centos6.6安装python2.7
  3. 【完结】如何掌握基于图像和视频的人脸表情识别,这9篇文章可以作为一个参考...
  4. CommandLineRunner与ApplicationRunner接口的使用及源码解析
  5. 刚接触git,提交文件时,遇到no changes added to commit
  6. FE助手 json格式化 reslet client
  7. mysql 日期滞后_如何滞后MySQL中的列?
  8. C/C++之win98扫雷外挂基础篇
  9. Tensorflow学习—— 预创建的 Estimator
  10. Kafka eagle 安装
  11. 田逸:坎坷IT路 从机修工到系统管理高手『英雄故事』
  12. 2、那智机器人时序基板的TBEX1、TBEX2连接
  13. 遗传+粒子群 求解多配送中心车辆调度问题(python)
  14. 机械制造作业考研题目答案分享——定位误差及其计算
  15. 2.1Mysql 基础--基本介绍
  16. 戴个美瞳却患上了角膜炎和干眼症?
  17. 简明c语言,简明易懂的C语言俄罗斯方块
  18. 网络安全学习笔记6(批处理编写)
  19. DialogFragment 白边去除
  20. 【java初学】static关键字和接口

热门文章

  1. SQL语句的基本语法一
  2. rabbitmq 如何删除队列中的消息
  3. Python中的支持向量机SVM的使用(有实例项目给的地址)
  4. PHP的http_build_query
  5. 控制面版中文件服务器属性,《服务器配置与管理》第3章基本配置.pptx
  6. java file构造方法_Java中FileOutputStream类的常用方法
  7. windows常用的几个操作
  8. 排查链接是否失效_如何进行移动站点流量排查?
  9. 西南石油大学计算机科学校区,任冬梅 - 西南石油大学 - 计算机科学学院
  10. 程序员离职原因的最佳回答_程序员面试被问离职原因,如实回答不适应996,面试官答复尴尬了...