`
qdch520
  • 浏览: 5290 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

new一个函数与直接调用一个函数的区别

 
阅读更多

例子一:

var Test =  function(){

 

this.name = "qudc";

return "qudc";

}

var a = Test();

var b = new Test();

 

例子二:

var Test =  function(){

 

this.name = "qudc";

return function(){return "Test"};

}

var a = Test();

var b = new Test();

 

上面两种情况,b都是一个对象,对象的构造方法是不是Test 要看有没有返回对象,如果返回对象(例子二中),那么b.constructor  为 Function 。例子一中,b.constructor  为 Test。

 

执行方法Test,返回值的类型由方法中的return语句来决定。

 

只要new一个函数(构造函数),如果构造函数没有返回值或者返回值不是对象,那么默认返回this对象,即本对象。如果返回其他对象,那么结果即为别的对象。调用new一个函数,会创建一个新的对象,在构造函数内部 ,即被调用的函数中, this 指向新创建的对象 Object。

例子二中 a 和 b没有功能性上的区别。可以认为相似,但不相同。

 

 

分享到:
评论

相关推荐

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

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

    [removed]new 一个函数和直接调用函数的区别分析

    这篇文章主要探讨了使用new关键字与直接调用函数这两种方式的区别,并通过具体代码示例来展示它们的不同行为和结果。 首先,我们需要了解在JavaScript中,函数可以返回不同类型的值。当一个函数被设计为构造函数...

    JS 四种函数调用模式

    使用 `new` 关键字调用函数时,会创建一个新的对象实例,并将这个新对象绑定到 `this`。构造函数主要用于初始化新创建的对象。 ```javascript function Person(name) { this.name = name; } let person = new ...

    C++程序设计教程函数的定义与调用

    2. **函数的调用**:在程序中,你可以通过函数名和传递实际参数来调用函数。例如: ```cpp int result = add(3, 5); ``` 这将调用`add`函数,传入`3`和`5`,并将返回值赋给`result`。 3. **函数的嵌套调用**:一个...

    c#构造函数的调用过程

    最后一个构造函数调用了基类的构造函数`base(i)`来初始化`x`。 ```csharp class B : A { public int y; // 默认构造函数 public B() { y = 0; } // 带参数的构造函数 public B(int i) { y = i; } //...

    lua调用C++函数

    1. **Lua与C++的交互接口**:Lua提供了一个名为`luaL_newstate`的API来创建一个新的Lua状态机,这是与C++交互的基础。然后,通过`luaL_openlibs`打开标准库,使Lua具备基本功能。 2. **注册C++函数到Lua**:使用`...

    C#中在一个窗体里调用另一个窗体的方法

    这里,`FormReportList`构造函数接收一个`FormPubs`类型的参数`f`,并将其实例化为成员变量`fp`,以便后续调用`FormPubs`中的方法或属性。 #### 2. 实现窗体间的事件触发 为了让`FormPubs`中的方法能够在`...

    在子窗口中调用父窗口的成员函数的实例

    1、用FindWindow("类名(可以是派生类)","窗口标题")或GetParent(),二者均能返回父窗口句柄,并能直接使用其成员函数。但是此法只能调用CWnd类里的成员函数,而不能调用自己创建的派生类中的函数。 2、在子窗口的...

    用new创建对象和直接定义的区别

    当我们使用`new`关键字时,通常会伴随着一个类的构造函数调用,以便对新对象进行初始化。 ```java // Java 示例 Person person = new Person("John", 30); // 堆内存中创建Person对象 ``` 在这个例子中,`new`...

    JavaScript中判断函数是new还是()调用的区别说明

    在JavaScript中,判断函数是通过new运算符创建实例的方式调用,还是通过普通函数调用,通常涉及到几种不同的方法和它们的局限性。下面将详细介绍每种判断方式及其适用场景和潜在问题。 首先,为了区分new调用和普通...

    java调用python中的自定义函数函数

    假设我们有一个Python文件,名为`addition.py`,其中包含一个名为`add`的函数,用于执行加法运算: ```python def add(a, b): return a + b ``` 在Java中,我们可以使用Jython的API来加载这个Python文件,并调用`...

    C++虚函数调用机制初探

    本文旨在探讨C++中的虚函数调用机制,通过分析一个简单的示例程序,解释虚函数如何在运行时被正确地调用,并深入剖析这一过程背后的原理。 #### C++中的虚函数调用机制 C++中的虚函数调用机制主要依赖于虚拟表...

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

    3. **构造器调用模式**:通过 `new` 关键字调用函数,如 `new Func()`. 这会创建一个新对象,其原型链指向函数的原型(`Func.prototype`),并且 `this` 指向新创建的对象。 4. **apply/call调用模式**:这两个方法...

    JavaScript程序设计课件:函数的调用方式.pptx

    一般形式的函数调用,是常见的函数调用方式,一般用于“没有返回值的函数”。 语法: 函数名称([参数1, 参数2, ……]) [参数1,参数2…]是可选的,用于表示实参列表,其值可以是零个、一个或多个。 5.2.2 函数的...

    qml和c++中的函数,互相调用的例子

    总结一下,QML和C++之间的函数调用主要涉及以下几个步骤: 1. 在C++中创建一个继承自`QObject`的类,并使用`Q_OBJECT`和`Q_INVOKABLE`标记需要在QML中调用的函数。 2. 注册C++对象到QML引擎,并设置为QML上下文的...

    不同类之间函数调用实例

    在C#编程中,类与类之间的函数调用是实现对象间交互的重要方式。本示例探讨了三种主要的函数调用方式:子类调用父类函数、父类调用子类函数以及子类之间的函数调用。下面将详细阐述这些概念。 1. 子类调用父类函数...

    C# 调用函数时动态获取参数名称和值

    首先,理解C#的基础:在C#中,函数参数在编译时就已经确定,因此在函数调用时直接通过位置或命名传递。然而,要动态获取参数名称和值,我们需要利用反射(Reflection)和表达式树(Expression Trees)这两个强大的...

    QT和网页中的JavaScript函数进行相互调用的实现

    - 在QT中定义一个槽函数,例如`handleJsCall`,然后使用`QWebChannel`来创建一个通信通道,让JavaScript可以调用这个槽函数。 - 首先,创建一个继承自`QObject`的C++类,暴露槽函数给JavaScript。比如,创建一个`...

    C# 调用C++DLL(函数参数包含指针)

    本篇文章将深入探讨如何在C#中调用一个C++DLL,特别是当DLL函数参数中包含指针时的处理方法。 首先,理解C#与C++之间的互操作性是关键。.NET框架提供了一个名为P/Invoke(Platform Invoke)的机制,允许C#代码调用...

Global site tag (gtag.js) - Google Analytics