实例化构造函数模块的小疑问
 发布于 11 年前  作者 cloudcome  4604 次预览  最后一次回复是 11 年前  来自  

#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 回复
alsotang

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

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

chefisawesome

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

cloudcome

@ChefIsAwesome 嗯是的,优先级关系