疑问一
javascript存在这构造函数跟普通函数,nodejs中存在这种说法吗?
看一片博客讲的lavascript构造函数跟普通函数的区别:根据上下文this的指向区分,this指向windows对象(也就是nodejs环境中的global顶层对象)时,是普通函数;this指向函数本身时就是构造函数。看代码:
function person(name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
console.log('My name is %s', this.name);
}
}
var Person = new person('Tom', '22'); //此时是构造函数,this指向person
Person.sayName();
person('Tom', '22'); //此时是普通函数,this指向window对象(在浏览器环境中)
window.sayName();
按照他的这个说法,区分构造函数和普通函数是根据函数调用的方法来区分的,也就是说一个函数即是构造函数又是普通函数,是这样吗?
疑问二
在nodejs中,把所有东西都看作是对象,我的问题是,function是一个什么样的对象?当它没有别实例化的时候,为什么this指向的是global顶层对象?