验证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 相关文章推荐
JavaScript XML实现两级级联下拉列表
Nov 10 Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 Javascript
IE6,IE7下js动态加载图片不显示错误
Jul 17 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
JavaScript程序设计高级算法之动态规划实例分析
Nov 24 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 Javascript
解决Layui 表格自适应高度的问题
Nov 15 Javascript
使用refresh_token实现无感刷新页面
Apr 26 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的安全策略
2006/10/09 PHP
支持oicq头像的留言簿(一)
2006/10/09 PHP
基于mysql的论坛(7)
2006/10/09 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
Python3常用内置方法代码实例
2019/11/18 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
理货员的岗位职责
2013/11/23 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
考核评语大全
2014/04/29 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript