首页 > 代码库 > javascript构造器模式创建对象
javascript构造器模式创建对象
工厂模式创建对象,虽然符合正常思维。
但由于对象在函数内部定义,故无法得知对象的类型(均为Object)。
使用构造器模式,可以创建特定类型的函数实例:
function Dog(age,size) { this.age=age; this.size=size; this.toAge=function(){ alert(this.age); }; } var dog1=new Dog(10,20); var dog2=new Dog(22,1);
此时,上述函数可以认为是对象的构造函数。
例子中,直接将属性赋值给了this对象,而创建对象的构造函数和构造器相同,例如:
alert(dog1.constructor==Dog);//true
那么,所创建的对象类型是什么呢?
alert(dog1 instanceof Object);//true alert(dog1 instanceof Dog);//true
对,构造函数可以将他的实例标识为一种特定的类型Dog类型。
并且构造函数作为函数,当然可以单独调用:
//作为普通函数调用 Dog(11,22);//添加到了window作用域 window.toAge();//11//在另外一个对象的作用域中调用 var o ={}; Dog.call(o,11,22); o.toAge();//11
但是上述构造器,在生成实例时,实际操作如下代码:
function Dog(age,size) { this.age=age; this.size=size; this.toAge= new Function("alert(this.age)"); }
显然,每一个实例都有一个Function实例。
alert(dog1.toAge==dog2.toAge);//false
因此我们可以将函数定义转移到构造器外部。
function Dog(age,size) { this.age=age; this.size=size; this.toAge=toAge; } function toAge() { alert(this.age); } var dog1=new Dog(11,22); var dog2=new Dog(2,33);
此时,减少了内存使用。但是,全局函数你懂的...
javascript构造器模式创建对象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。