让javascript也玩得起对象

有一家母猪要生产一头猪,首相我们不考虑母猪是一个对象,就想成有一头母猪要生产一个对象,这个对象是一头小猪,我们可以使用工厂模式

如下:

function bigPic(){
    var samllPic = new Object();
    samllPic.name = "sbgdg";
    return samllPic;
}
samllPic = bigPic();
console.log(samllPic.name); //sbgdg

这里使用一个叫作bigPic的函数来产一个小猪,在函数的内部有一个变量samllPic来引用一个新创建的对象,给这个对象设置name属性,叫"sbgdg"。最后用return来返回这个引用,实际就是这个叫bigPic的函数返回的不是别的,而是一个对象的引用。执行完函数,局部变量samllPic被撤销,返回的对象引用赋值给全全局变量samllPic。

第一个samllPic和第二个samllPic是不一样的,这个首先想到。

有一个缺点就是得到一个小猪,但我们不知道母猪的信息,也就是类的信息,单单一个函数绝不能满足我们的需要,接着下一个模式出现了构造模式

构造模式很好解决了对象和类之间的关系

//构造模式
function BigPig(){
    this.name = "ssqwgkg";
    this.samllPig = null;
    this.makePic = function(name){
        this.samllPig = new SamllPig(name);
    }
}
function SamllPig(name){
    this.name = name;
}
var bigPig = new BigPig();
bigPig.makePig("sbgdg");
console.log(bigPig.name);   //ssqwgkg
console.log(samllPig.name);//sbgdg

可以看到这次和上面的不同,这里我们把母猪作为一个类,实例化一头母猪,在母猪的内部立生一头小猪

母猪的实例对象bigPig执行一个makePig的方法,则对象有一个属性samllPic是等于new SamllPig(name),这个时候又实例化了一个SamllPic这个类,把小猪作为属性赋予给母猪实例(大家都知道小猪永远都是母猪的)

每一个实例化的对象都有一个constructor属性就是指向各自的类名

console.log(bigPig.constructor==BigPig);//true
console.log(bigPig.samllPig==SamllPig); //true

来有一个检测一个对象是否是一个类的实例的关键字,就是 instanceof

console.log(bigPig instanceof BigPig);	//true
console.log(bigPig.samllPig instanceof SamllPig); //true


endingPos  +_+#


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值