实例化构造函数模块的小疑问
发布于 10 年前 作者 cloudcome 3958 次浏览 最后一次编辑是 8 年前

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

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

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

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

@ChefIsAwesome 嗯是的,优先级关系

回到顶部