您好,欢迎访问一九零五行业门户网

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

话说在楼猪理解和实践能力尚欠火候的时候,在这篇里曾经照搬了李战老师不少东西写在自己的博客里作为“知识储备”。这一次还是不能免俗。在翻到第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呢?卖个关子,根据楼猪通篇直白而单纯的表述,你应该已经知道结果了,这里不公布答案了。
最后,容楼猪在这里得意地自恋一下:个人认为上面这三段代码应该比原书中验证“函数就是对象的本质”的代码更具有说服力。
其它类似信息

推荐信息