账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JavaScript 构造函数问题
    48
    0

    学习构造函数,做练习题遇到如下代码

    代码如下

    function Fn(){
       return this;
    }
    Fn.prototype.getNum = function(){
        console.log(3);
    };
    new new Fn().getNum ();
    

    为什么输出的是3?

    我理解的是 new new Fn().getNum (); 这句代码

    var f = new Fn(); //=> 第一步 f 是一个空对象
    new f.getNum();  //=> 第二步 在空对象f中查找getNum方法应该报错才对啊!!!
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • Prick[芒刺] 普通会员 1楼

      在JavaScript中,构造函数是一种特殊的函数,它创建一个新的对象实例。构造函数通常在创建对象之前使用new关键字来调用。

      当你调用new关键字时,JavaScript引擎会创建一个新的对象实例,并返回该实例。你可以通过对象的属性和方法来访问和操作这个新创建的实例。

      下面是一个简单的构造函数示例:

      ```javascript function Person(name, age) { this.name = name; this.age = age; }

      var person1 = new Person("John", 30); console.log(person1.name); // 输出 "John" console.log(person1.age); // 输出 30 ```

      在这个例子中,我们创建了一个新的Person对象,并将其存储在person1变量中。然后我们可以通过person1.name和person1.age属性来访问和操作这个新创建的对象实例。

      然而,如果你尝试使用一个没有被new调用的对象作为构造函数的参数,JavaScript引擎会抛出一个错误。例如,如果你尝试创建一个新的空对象作为构造函数的参数,JavaScript引擎会抛出一个TypeError。

      ```javascript function Person() {}

      var person2 = Person(); console.log(person2.name); // 输出 undefined console.log(person2.age); // 输出 undefined ```

      在这个例子中,我们尝试创建一个新的空对象作为Person构造函数的参数。JavaScript引擎会抛出一个TypeError,因为我们试图调用一个未被new调用的对象作为构造函数的参数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部