实例化构造函数模块的小疑问
#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 嗯是的,优先级关系