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


Posted in Javascript onJune 27, 2010

话说在楼猪理解和实践能力尚欠火候的时候,在这篇里曾经照搬了李战老师不少东西写在自己的博客里作为“知识储备”。这一次还是不能免俗。在翻到第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 相关文章推荐
分享别人写的一个小型js框架
Aug 13 Javascript
JQuery魔力之$("tagName")与selector
Mar 05 Javascript
一个JavaScript获取元素当前高度的实例
Oct 29 Javascript
基于jQuery实现表单提交验证
Nov 24 Javascript
javascript表单事件处理方法详解
May 15 Javascript
利用PM2部署node.js项目的方法教程
May 10 Javascript
使用vue-router设置每个页面的title方法
Feb 11 Javascript
浅谈React Event实现原理
Sep 20 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
JavaScript模块管理的简单实现方式详解
Jun 15 Javascript
超详细小程序定位地图模块全系列开发教学
Nov 24 Javascript
js实现验证码干扰(静态)
Feb 22 Javascript
jQuery选择头像并实时显示的代码
Jun 27 #Javascript
Javascript匿名函数的一种应用 代码封装
Jun 27 #Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
Jun 25 #Javascript
让IE6支持min-width和max-width的方法
Jun 25 #Javascript
jQuery与其它库冲突的解决方法
Jun 25 #Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
Jun 25 #Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 #Javascript
You might like
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
PHP中SESSION过期设置
2021/03/09 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
js实现继承的5种方式
2015/12/01 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
前端微信支付js代码
2016/07/25 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
python进阶教程之词典、字典、dict
2014/08/29 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
银行类自荐信
2014/02/04 职场文书
企业后勤岗位职责
2014/02/28 职场文书
中秋节主持词
2014/04/02 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
欠条范文
2015/07/03 职场文书
2015年重阳节主持词
2015/07/04 职场文书
Python Django模型详解
2021/10/05 Python
Python 数据可视化之Seaborn详解
2021/11/02 Python