面向对象中关键字符 new的意义

来源:互联网 发布:电视网络怎么连接不上 编辑:程序博客网 时间:2024/06/07 16:24
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一下就得到了。

0 0
原创粉丝点击