本文出至(讨论): http://jsvm.org/forums/1947/ShowPost.aspx#1947
js 中 Object 和 Function 的关系是微妙的,他们互为对方的一个“实例”。
Function instanceof Object 和 Object instanceof Function 都是 true
1。我们可以认为 Object 是一个特殊的“类”,而这里的“类”即:function
于是便可以理解为: Object = function () {} 或 Object = new Function(); 即: Object 是 Function 的一个实例,所以,Object 原型链中便包含 Function.prototype,得出: Function.prototype.isPrototypeOf(Object) 为 true
2。同时,js中,所有对象(不包括js语言外部对象)都可视为是 Object 的一个实例, Function 不例外,Function.prototype 亦不例外,于是有Function = new Object(); Function.prototype = new Object(), 于是 Object.prototype.isPrototypeOf(Function) 和 Object.prototype.isPrototypeOf(Function.prototype) 都为 true 了
3。补充:Function 本身也是一个“类”,然而,所有“类”都是Funciton的实例,于是 Function instanceof Function; 为true。同时,所有对象都是 Object 类的实例,Object 本身也是一个对象,所有又有 Object instanceof Object 也为 true。另外,还可以认为 Funciton 类型是 Object 类型的一个“派生类”,class Function 继承了class Object ,是 class Object 的一个“子类”。
更多内容请查看:http://jsvm.org/forums/1947/ShowPost.aspx#1947
=======================
<script>
var bb= function (){};
alert(bb instanceof Function)
alert(bb instanceof Object)
//alert(Function instanceof Object)
//alert(Object instanceof Function)
//alert(Function.prototype.isPrototypeOf(Object))
//alert(Object.prototype.isPrototypeOf(Function))
//alert(Function instanceof Function)
//alert(Object instanceof Object)
</script>
js Object与function的关系
=============================
Microsoft.JScript.GlobalObject.escape("测试打");
建议查看Microsoft.JScript运行机制,其只是宿主不同,应该原理一样,所以可以查看开源的代码,便于理解原理