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

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一下就得到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值