您的位置:首页 > Web前端 > JavaScript

正则替换问题 | jsvm暴露_package关键字,方便调试 2006-12-26

2009-06-12 15:39 363 查看
为什么Object.prototype.isPrototypeOf(Function)是true

关键字: javascript

本文出至(讨论): http://jsvm.org/forums/1947/ShowPost.aspx#1947

js 中 Object 和 Function 的关系是微妙的,他们互为对方的一个“实例”。
Function instanceof ObjectObject instanceof Function 都是 true

1。我们可以认为 Object 是一个特殊的“类”,而这里的“类”即:function

于是便可以理解为: Object = function () {} 或 Object = new Function(); 即: ObjectFunction 的一个实例,所以,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运行机制,其只是宿主不同,应该原理一样,所以可以查看开源的代码,便于理解原理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: