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

来源:互联网 发布:年收入上亿 知乎 编辑:程序博客网 时间:2024/06/15 21:09
为什么Object.prototype.isPrototypeOf(Function)是true
关键字: javascript

本文出至(讨论): 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(); 即: 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运行机制,其只是宿主不同,应该原理一样,所以可以查看开源的代码,便于理解原理

 

原创粉丝点击