`
chpn
  • 浏览: 8597 次
  • 来自: ...
社区版块
存档分类
最新评论

为什么Object.prototype.isPrototypeOf(Function)是true

阅读更多

本文出至(讨论): 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

分享到:
评论

相关推荐

    JS中的hasOwnProperty()和isPrototypeOf()属性实例详解

    这两个属性都是Object.prototype所提供:Object.prototype.hasOwnProperty()和Object.prototype.isPropertyOf() 先讲解hasOwnProperty()方法和使用。在讲解isPropertyOf()方法和使用 看懂这些至少要懂原型链 一、...

    JavaScript中Object和Function的关系小结

    Function instanceof Object 和 ... 即:Object 是 Function 的一个实例,所以,Object 原型链中便包含 Function.prototype,得出: Function.prototype.isPrototypeOf(Object) 为 true 2。同时,js中,所有对象(不包

    weapp.qrcode.js

    var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object if (obj.constructor &&...

    JavaScript实现的字符串replaceAll函数代码分享

    String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {   if (!RegExp.prototype.isPrototypeOf(reallyDo)) {   return this.replace(new RegExp(reallyDo, (ignoreCase ? “gi”: “g...

    JavaScript权威指南

    Function Arguments: The Arguments Object Section 7.5. Function Properties and Methods Chapter 8. Objects Section 8.1. Objects and Properties Section 8.2. Constructors Section 8.3. Methods...

    js中的hasOwnProperty和isPrototypeOf方法使用实例

    isPrototypeOf:是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。 代码如下:function siteAdmin(nickName,siteName){ this.nickName=nickName; this.siteName=siteName;}...

    all-keys:获取对象的所有属性键,包括不可枚举和继承的

    Object . getOwnPropertyNames ( Symbol . prototype ) ; /* [ 'constructor', 'toString', 'valueOf' ] */ allKeys ( Symbol . prototype ) ; /* Set { 'constructor', 'toString', 'valueOf', '...

    JavaScript中isPrototypeOf函数作用和使用实例

    如果 object2 的 原型链中包含object1,那么JavaScript中isPrototypeOf函数方法返回 true。 原型链可以用来在同一个对象类型的不同实例之间共享功能。 如果 object2 不是一个对象或者 object1 没有出现在 object2 中...

    JavaScript中的原型prototype完全解析

    JS中所有的东西都由Object衍生而来, 即所有东西原型链的终点指向Object.prototype   // [constructor, toString, toLocaleString, valueOf, hasOwnProperty, isPrototypeOf, // propertyIsEnumerable, __...

    JavaScript isPrototypeOf和hasOwnProperty使用区别

    JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以参考下。

    浅析JavaScript中的对象类型Object

    ECMAScript中的对象其实就是一组数据和功能的集合。 ECMAScript中Object是所有对象的基础。 理解:Object类型是所有它的实例的基础,...3.isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型 4.toLoca

    《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

    2.8 引用类型 1、Object类 ECMAScript中的所有类都是由Object类继承而来。...必须用字符串指定该属性值 IsPrototypeOf(object):判断该对象是否为另一个对象的原型。 PropertyIsEnumerable(property)

    JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()

    主要介绍了JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()的相关资料,需要的朋友可以参考下

    javascript文档

    for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 ...

    JScript 语言参考

    for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 ...

    微软JavaScript手册

    for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 ...

    关于JavaScript 原型链的一点个人理解

    JavaScript借鉴了许多语言的特点...诚然,我们可以为一个对象设置prototype property,但这又怎么样呢,这只是表象;后面暗藏杀机。  好,那我可以用isPrototypeOf()来检验某个对象是不是另一个对象的原型;然而这也是

Global site tag (gtag.js) - Google Analytics