`

早绑定和晚绑定

阅读更多
引用
早绑定(early binding)是指在实例化对象之前定义它的属性和方法,这样编译器或解释程序就能够提前转换机器代码。在 Java 和 Visual Basic 这样的语言中,有了早绑定,就可以在开发环境中使用 IntelliSense(即给开发者提供对象中属性和方法列表的功能)。ECMAScript 不是强类型语言,所以不支持早绑定。

另一方面,晚绑定(late binding)指的是编译器或解释程序在运行前,不知道对象的类型。使用晚绑定,无需检查对象的类型,只需检查对象是否支持属性和方法即可。ECMAScript 中的所有变量都采用晚绑定方法。这样就允许执行大量的对象操作,而无任何惩罚。


早绑定就类似于java中,事先定义对象的属性,方法,然后我们实例化对象,赋给它相应的属性和方法。这样,由于事先定义好了对象,编译器就可以提前转换机器代码。
而上面关于晚绑定的定义我觉得只是晚绑定执行后的一个结果,不是晚绑定的定义。
其实晚绑定就是等到我们要用的时候再把属性和方法赋给对象,我们不事先定义。这样编译器在运行之前不知道对象的类型。


早绑定的优点是:
编译效率
代码提示(代码智能感知)
编译时类型检查
晚绑定的优点是:
不用申明类型
对象类型可以随时更改
分享到:
评论

相关推荐

    delphi之调用外部dll中的函数[文].pdf

    本文将深入探讨如何在Delphi中实现早绑定和晚绑定两种方式来调用DLL函数。 **早绑定(Static Linking)** 早绑定是指在编译阶段就已经确定了要调用的DLL函数。这种方式通常适用于已知DLL函数的情况,因为它提供了...

    推选文档自动化对象PPT.ppt

    4. **使用自动化对象的客户**:自动化对象的使用者有两种主要方式:早绑定和晚绑定。早绑定在编译时就需要知道对象的接口信息,这通常在C++等强类型语言中使用。晚绑定则在运行时通过IDispatch获取方法和属性,常见...

    ATL双接口实例,本人自写代码

    由于双接口同时支持早绑定和晚绑定,因此它可以提高性能,并且兼容各种不同类型的客户端。 总之,ATL双接口是一种强大的工具,它使得COM组件可以方便地与各种客户端进行交互,无论是C++编译时绑定的代码还是脚本...

    使用MFC和晚绑定创建COM对象

    本文将深入探讨如何利用MFC和晚绑定技术来创建和使用COM对象。 首先,理解COM的基本概念是必要的。COM是微软提出的一种二进制标准,定义了一种跨进程通信的规范,使得不同语言和平台编译的对象可以相互通信。COM...

    "Inside COM" 源代码

    6. **双重接口(Dual Interface)**:结合了接口指针和晚绑定(Vtable-based early binding)的特性,使得接口同时支持早绑定和晚绑定,方便使用。 7. **类型库(Type Library)**:存储关于COM组件的所有元数据,...

    Office编程手册合集(CHM).zip

    - 掌握早绑定和晚绑定的概念,理解它们对性能和代码可读性的影响。 8. **实用技巧**: - 用户界面自定义:创建自定义菜单、工具栏和对话框,增强用户交互体验。 - 文件操作:读取、写入和合并文本文件,导入和...

    Excel.VBA.747

    7. **对象的引用和声明**:理解并熟练使用ByRef和 ByVal,以及早绑定和晚绑定的概念,对对象进行正确引用。 8. **外部数据源的连接**:学习如何通过ADO(ActiveX Data Objects)与外部数据库交互,实现数据的实时...

    com技术内幕 源代码

    - **双重接口(Dual Interface)**:结合了接口指针和晚绑定(晚绑定通过`IDispatch`接口实现)的特性,提供早绑定和晚绑定两种调用方式。 2. **COM的生命周期管理**: - **引用计数(Reference Counting)**:...

    使用智能指针和晚绑定创建COM对象

    不同于早绑定(编译时绑定),晚绑定允许在运行时确定接口的方法调用。在C++中,这通常通过虚函数实现,而COM对象的接口都是虚的。晚绑定提供了更大的灵活性,因为可以在程序运行时决定使用哪个具体实现,甚至可以在...

    JavaScript面向对象基础.ppt

    8.2.4 对象的早绑定和晚绑定 JavaScript采用动态绑定,即晚绑定,意味着在运行时决定方法调用的对象。 8.3 JavaScript的对象层次 8.3.1 JavaScript对象模型 JavaScript有全局对象、内置对象、宿主对象等层次结构,...

    C# COM+ Programming(英文)免费下载

    4. **实现IDispatch接口**:对于需要支持早期绑定和晚绑定的COM组件,需要实现IDispatch接口,以便于自动化和脚本语言调用。 5. **服务器激活模式**:COM+支持两种激活模式:进程内(In-Process)和进程外(Out-of-...

    COM组件技术讲义-潘爱民

    5. **双重接口**:为了在托管代码(如.NET)和非托管代码之间提供更好的互操作性,COM引入了双重接口,它同时继承自IUnknown和IDispatch接口,提供了早绑定和晚绑定两种调用方式。 6. **注册与撤销注册**:COM组件...

    stdole.rar

    - **IDispatch**:这个接口允许不熟悉COM对象的客户端通过类型安全的方式访问对象的方法和属性,通常用于早期绑定和晚绑定。 2. **__AssemblyInfo__.ini**: 这个文件通常在.NET项目中用于存储元数据信息,虽然它...

    C# 使用晚绑定实现压缩Access数据库

    晚绑定则牺牲了一些性能,换取了更高的灵活性和兼容性。 在标题和描述中提到的场景,使用晚绑定是为了实现Access数据库的压缩功能,而避免在项目中直接引用特定的组件,如`JRO.JetEngine`。这样做的好处在于,当多...

    绑定网关Mac和IP

    Windows xp/windowss7 /windows8绑定网关Mac和IP

    深入理解C++的动态绑定与静态绑定的应用详解

    为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、...

    使用简单的类动态创建IDispatch接口

    这里的`dual`关键字表示该接口同时支持早绑定和晚绑定。 2. **创建ATL COM类**:接下来,使用ATL宏创建一个COM类,实现`IMyDispatch`接口。例如: ```cpp class ATL_NO_VTABLE CMyDispatch : public ...

    Python延迟绑定问题原理及解决方案

    延迟绑定问题通常在涉及闭包和匿名函数(lambda函数)时出现。在给定的例子中,`multipliers()`函数返回一个由lambda函数组成的列表。每个lambda函数引用了外部函数`multipliers`中的变量`i`。然而,当lambda函数被...

Global site tag (gtag.js) - Google Analytics