跳到主要内容
CNode

实例化构造函数模块的小疑问

社区
Ccloudcome发布于 12 年前最后回复 12 年前
347560

#1、构造函数模块 现有1个exports为构造函数的模块,例:

var Cat = function() {
    this.name = 'cat';
};

Cat.prototype.eat = function() {
    return 'fish';
};

module.exports = Cat;

#2、实例化构造函数 ##2.1、方法1

var cat = new require('./_test.js')();

##2.1、方法2

var cat = new (require('./_test.js'))();

##2.3、方法3

var Cat = require('./_test.js');
var cat = new Cat();

3种实例化方法,其中第1种会报错,2和3是对的,为什么1是错的而2是对的呢?

查看回复

回复 (3)

C
cloudcome#312 年前
C
chefisawesome#212 年前

这应该算优先级问题吧。碰上new的时候先做new

A
alsotang#112 年前

第一种是否先执行了 new require('./_test.js'),然后得到 cat 实例后,又把 cat 当做函数进行了调用所以出错?

你看错误信息应该能看出来吧

参与回复

登录后即可参与回复。登录