让javascript也玩得起对象

来源:互联网 发布:linux ln fs 编辑:程序博客网 时间:2024/05/06 17:24

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

如下:

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);   //ssqwgkgconsole.log(samllPig.name);//sbgdg

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

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

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

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

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

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


endingPos  +_+#


原创粉丝点击