博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript构造器模式创建对象
阅读量:4663 次
发布时间:2019-06-09

本文共 1109 字,大约阅读时间需要 3 分钟。

  工厂模式创建对象,虽然符合正常思维。

  但由于对象在函数内部定义,故无法得知对象的类型(均为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);

  此时,减少了内存使用。但是,全局函数你懂的...

转载于:https://www.cnblogs.com/stonl/p/4255249.html

你可能感兴趣的文章
【LOJ6043】「雅礼集训 2017 Day7」蛐蛐国的修墙方案(搜索技巧题)
查看>>
【洛谷5309】[Ynoi2012] D1T1(分块)
查看>>
如何从trace文件分析网络性能(转)
查看>>
堆(heap)、栈(stack)、方法区(method)
查看>>
hdoj4685
查看>>
Java数组的三种定义
查看>>
iOS - 3种方法获取设备硬件类型:
查看>>
bzoj1293: [SCOI2009]生日礼物
查看>>
javascript中的闭包、模块与模块加载
查看>>
________________初学spring1
查看>>
第二阶段第六天冲刺
查看>>
Linux下的tar命令
查看>>
css position定位
查看>>
【Java】基本数据类型以及其转换
查看>>
线性代数基础
查看>>
【以太坊开发】如何开发一个编译以太坊智能合约并且发布的平台(一)
查看>>
两个矩阵相乘算法
查看>>
go包管理工具glide
查看>>
PHP XML Parser 函数
查看>>
HDU 1166 敌兵布阵(线段树区间求和)
查看>>