验证javascript中Object和Function的关系的三段简单代码

时间:2024-04-29 13:43:32 

话说在楼猪理解和实践能力尚欠火候的时候,在这篇里曾经照搬了李战老师不少东西写在自己的博客里作为“知识储备”。这一次还是不能免俗。在翻到第5章的时候,被开篇第二段话深深吸引和折服:“函数具有对象的全部特征,你完全可以把函数当对象调用。其实,函数就是对象,只不过比一般的对象多了一个括号“{}”操作符,这个操作符用来执行函数的逻辑,即函数本身还可以被调用,一般对象却不可以被调用,除此之外完全相同”。寥寥数语,却深刻阐释了对象和函数的关系。下面楼猪就通过自己写的几段简单代码,论证一下javascript内置Object和Function的关系。

1、Function就是Object,Object就是Function


alert(Function instanceof Object); // true
alert(Object instanceof Function); // true


如你所看到的那样,通过instanceof操作符,函数就是对象,对象就是函数。
2、既然1是成立的,那么Function扩展的原型方法,Object能“得到”吗?


alert(Object.funcMethod); // undefined
Function.prototype.funcMethod = function() {
/*some function method code here*/
}
alert(Function.funcMethod);
alert(Object.funcMethod);
alert(Function.funcMethod === Object.funcMethod); //true


你没有看错,我们为Function扩展的原型方法funcMethod,Object实现了神奇的“不劳而获”。
3、既然1和2都成立,那么Object扩展的原型方法,Function能“得到”吗?!
代码


alert(Function.objMethod); // undefined
Object.prototype.objMethod = function() {
/*some object method code here*/
}
alert(Object.objMethod);
alert(Function.objMethod);
alert(Function.objMethod === Object.objMethod); //true or false?


上面代码中最后有个问号的那一行是弹出true还是false呢?卖个关子,根据楼猪通篇直白而单纯的表述,你应该已经知道结果了,这里不公布答案了。
最后,容楼猪在这里得意地自恋一下:个人认为上面这三段代码应该比原书中验证“函数就是对象的本质”的代码更具有说服力。

标签:javascript,Object,Function
0
投稿

猜你喜欢

  • Python按行读取文件的实现方法【小文件和大文件读取】

    2021-12-11 01:31:08
  • python爬虫字体加密的解决

    2021-02-22 12:25:57
  • python代码实现猜拳小游戏

    2023-10-16 19:00:46
  • Python super()函数使用及多重继承

    2022-10-06 19:21:37
  • Python线性方程组求解运算示例

    2021-07-26 16:52:29
  • 10款最佳Python开发工具推荐,每一款都是神器

    2022-04-13 06:54:13
  • 如何远程连接SQL Server数据库的图文教程

    2024-01-12 15:32:32
  • 从零开始学习Node.js系列教程二:文本提交与显示方法

    2024-05-08 09:35:30
  • Python内置函数dir详解

    2023-05-29 13:38:10
  • python实现爬虫统计学校BBS男女比例之多线程爬虫(二)

    2021-05-10 03:08:18
  • Python单例模式的两种实现方法

    2023-03-03 12:31:09
  • python jinjia2的项目使用

    2021-03-16 04:57:21
  • Python实现打砖块小游戏代码实例

    2021-02-27 00:35:38
  • asp实现非大小写的替换函数

    2010-05-19 21:23:00
  • 举例讲解Python的Tornado框架实现数据可视化的教程

    2022-01-16 23:56:52
  • Centos5.x下升级python到python2.7版本教程

    2023-04-15 13:50:07
  • SQL语句练习实例之七 剔除不需要的记录行

    2011-11-03 16:50:51
  • Django模板语言 Tags使用详解

    2022-09-27 23:37:35
  • MySQL5.7 JSON类型使用详解

    2024-01-15 23:57:04
  • Mysql连接本地报错:1130-host ... is not allowed to connect to this MySQL server解决

    2024-01-28 04:52:50
  • asp之家 网络编程 m.aspxhome.com