js中没有类,但是可以从构造函数中创建对象,同时也提供了new运算符,使得构造气看起来更像一个类.
除了宿主对象提供的一些内置函数,大部分js函数都可以当作构造器使用.构造器的外表和普通函数一模一样,
它们的区别在于被调用的方式.当用new运算符调用函数时,该函数总会返回一个对象,通常情况下,
构造器的this就指向返回的这个对象. var MyClass = function(){
this.name = 'andy';
}
var obj = new MyClass();
console.log(obj.name);
但是new调用构造器时,还需要注意个问题,如果构造器显示地返回一个object类型的对象,
那么此次运算结果最终会返回这个对象,而不是我们之前期待的this;
var MyClass1 = function(){
this.name = 'andy';
return {// 显示地返回一个对象
name:'jack'
}
}
var obj1 = new MyClass1();
console.log(obj1.name);//'jack'
如果构造器不显示地返回任何数据,或者返回一个非对象类型的数据,就不会造成上述问题
var MyClass2 = function(){
this.name = 'andy';
return 'jack';//返回string类型
}
var obj2 = new MyClass2();
console.log(obj2.name);//'andy