`
mutongwu
  • 浏览: 450309 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

理解函数即对象

阅读更多
function T(name){
	this.name = name;
}
var a = new T('Jack');


//注意:__proto__属性在访问IE下无法访问。

alert(a.constructor)//function T(){...}
alert(T.prototype.constructor);//function T(){...}
alert(T.prototype.isPrototypeOf(a))//true.判定 a 的_proto_ 指向 T的prototype对象。
alert(a.__proto__ == T.prototype)//true

//进一步的,函数 T是 Function的一个实例
alert(T.constructor)//function Function() {[native code]}
alert(Function.prototype.isPrototypeOf(T))//true
alert(T.__proto__)//function (){}
alert(T.__proto__ == Function.prototype)//true

alert(T instanceof Function)//true
alert(T instanceof Object)//true

//同时,Function本身是 Object 的一个实例
alert(Function instanceof Object)//true
alert(Object.prototype.isPrototypeOf(Function))//true

//Object本身也是一个"函数",看起来它像是自己的一个实例.
alert(Object.prototype.isPrototypeOf(Object))//true

//但是 Object.__proto__ 并不等于 Object.prototype,这就不知道原因了。
alert(Object.__proto__ == Object.prototype)//false


//一般来说,函数prototype对象都是Object的实例,因此,__proto__指向Object的prototype对象。
alert(Object.prototype.isPrototypeOf(T.prototype))//true
alert(Object.prototype.isPrototypeOf(Function.prototype))//true

//而Obejct的prototype对象比较特别,它的__proto__值为null.
alert(Object.prototype.__proto__)//null
alert(Object.prototype.isPrototypeOf(Object.prototype))//false



图示:


  • 大小: 26.9 KB
分享到:
评论

相关推荐

    即用即查——ASP+VBScript函数与对象参考手册

    《即用即查——ASP+VBScript函数与对象参考手册》是一本专为从事Web应用开发的人员、ASP初学者、网页设计与制作人员、网页制作爱好者以及大中专院校学生设计的专业指导书籍。该书由韩延峰编著,ISBN编号为978-7-115-...

    C++函数对象的定义及使用

    通过理解并熟练运用函数对象,C++程序员可以编写出更加高效、灵活和可维护的代码。无论是简单的数学运算还是复杂的业务逻辑,函数对象都是C++中强大的工具之一。在实际项目中,它们常常用于自定义比较、转换或其他...

    函数之间调用同一个对象方法

    在探讨“函数之间调用同一个对象方法”的主题时,我们首先需要理解几个核心概念:函数、对象、方法以及事件监听器。这些概念是现代编程语言,尤其是面向对象编程语言中的基石,它们共同构建了复杂软件系统的逻辑框架...

    JavaScript中函数对象调用模式总结

    JavaScript中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。...通过阅读这份文档,开发者可以进一步巩固和深化对JavaScript中函数对象调用模式的理解。

    c++ 类与对象课件,包括对象的初始化,对象的使用,构造函数和析构函数等等

    在这个课件中,我们将深入理解类与对象的定义、使用,以及相关的构造函数、析构函数、访问权限、成员函数、静态成员、友元等关键知识点。 首先,类(Class)是C++中定义的一种数据结构,它包含了数据成员(Data ...

    C#构造函数的理解

    构造函数是C#中非常重要的一个概念,正确地理解和使用构造函数对于有效地管理对象的状态至关重要。通过使用默认构造函数和有参构造函数,可以灵活地控制对象的初始化过程,从而提高程序的健壮性和可维护性。此外,...

    c++类成员函数作为回调函数

    6. **C++20的函数对象适配器** C++20引入了`std::function_object_adapter`,它可以直接将成员函数转换为可调用对象,简化了成员函数作为回调的使用: ```cpp auto callback = std::function_object_adapter, ...

    javascript实现根据函数名称字符串动态执行函数的方法示例

    使用window对象的方法有一个前提条件,即要确保函数是作为全局函数定义的。示例代码如下: ```javascript window.targetFunction = function() { alert(11111); return 9; }; test("targetFunction"); function ...

    c++空对象指针也可调用成员函数.rar

    虚函数的主要作用在于实现多态性,即同一类型的指针可以调用不同子类重写的成员函数。在类定义中,通过在成员函数前加上`virtual`关键字,即可声明该函数为虚函数。例如: ```cpp class Base { public: virtual ...

    C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar

    在C++编程中,对象的构造过程涉及到多个层面,包括对象成员构造函数、基类构造函数以及派生类本身的构造函数。理解它们的执行顺序对于编写健壮的代码至关重要。以下将详细阐述这三个构造函数的调用时机和逻辑。 1. ...

    构造函数不能声明为虚函数,析构函数可以声明为虚函数

    3. **动态绑定需求**:虚函数的主要作用在于实现动态绑定,即根据对象的动态类型来决定调用哪个函数版本。然而在构造函数执行时,对象的动态类型尚未完全确定,因此无法进行动态绑定。 综上所述,构造函数不能声明...

    函数对象的写法等的实验报告

    实验报告——函数对象 实验目的: 本实验旨在深入理解和熟练运用C++中的函数对象,包括自定义函数对象和STL中预定义的函数...通过这些练习,学生能够深入理解函数对象的原理和使用方式,为后续的C++编程打下坚实基础。

    构造函数和复制构造函数

    在语句4中,我们使用了一个临时对象的方式来调用构造函数,这种方式可以理解为两步:先构造对象,然后进行复制操作。但是,在语句7中,我们发现这种方式并不是编译器实际执行的方式。实际上,编译器会优化这种方式,...

    c++中子类对象不能调用父类中的虚函数

    在C++编程语言中,`...理解子类对象不能直接调用父类虚函数这一概念,有助于避免编程中的常见错误,并能更好地利用C++的面向对象特性。在实际编程中,应始终通过基类指针或引用调用虚函数,以确保多态性的正确行为。

    对象的函数指针(c++)

    由于成员函数指针的复杂性,许多开发者避免直接使用它们,转而使用其他设计模式,如函数对象(functors)或C++11引入的lambda表达式。然而,了解如何使用成员函数指针仍然是C++开发者的宝贵技能,尤其是在需要高性能...

    C++有子对象的派生类的构造函数

    当一个类含有子对象(即嵌套类或成员对象)时,这些子对象在派生类的实例化过程中也需要被正确地初始化。本篇文章将深入探讨含有子对象的C++派生类构造函数的细节,以及如何有效地管理它们。 一、构造函数的基本...

    函数和window对象

    总结来说,理解和掌握JavaScript中的函数和`window`对象对于开发Web应用程序至关重要。函数是组织和复用代码的关键工具,而`window`对象则提供了与浏览器环境交互的接口。通过深入学习这两个主题,开发者可以更高效...

    对象和作用域限制符::在调用成员函数时的区别

    在C++编程语言中,对象和作用域限制符`::`在调用成员函数时扮演着不同的角色。首先,理解类和对象的概念是至关重要的。类是定义对象特性和行为的蓝图,它并不实际占用内存空间。而对象是类的具体实例,当创建一个类...

    c++程序设计实验指导:构造函数及对象数组

    ### C++程序设计实验指导:构造函数及对象数组 #### 实验目的 1. **学会各种形式的构造函数的写法...通过这些实验任务的学习与实践,不仅可以掌握构造函数和对象数组的基础知识,还能够加深对面向对象编程思想的理解。

    深入理解C++对象模型

    《深入理解C++对象模型》是一本专门为C++高级开发者准备的经典著作,旨在揭示C++对象模型的底层机制和工作原理。这本书英文版的出现,为那些具备良好英语阅读能力的程序员提供了深入学习C++核心概念的机会。CHM格式...

Global site tag (gtag.js) - Google Analytics