function Person(name){
console.log(thhis);//this指向window
var obj = new Object();
obj.name = name;
obj.showName = function(){
console.log(obj.name);
}
return obj;
}
以上代码我能得到一个Person类
var p1 = Person(‘张三’);
var p2 = Person(‘李四’);
首先说一下这种写法的问题;
关于this,在Person类的内部this其实指向的是window;Person类其实是一个封装函数;它不属于某一个对象,它是全局的;所以挂在到的是window对象;一般函数中this指向的是这个方法所属的那个对象;不难理解,最终this指向window;
而new 存在的意义是什么呢;
当new 去调用一个函数;函数中this指向的就是这个对象实例;并且函数的返回值就是这个this;
function Person(name){
console.log(thhis);//this指向对象实例
this.name = name;
this.showName = function(){
console.log(obj.name);
}
}
var p1 = new Person(‘张三’);
var p2 = new Person(‘李四’);
上面的写法就是我们平常所说的工厂模式;
工厂模式本质就是封装函数;
好处就是,对象不用一个个去写;同类的对象只要new一下就得到了。