JavaScript中的几种模式
来源:互联网 发布:网络不停的掉线 编辑:程序博客网 时间:2024/06/16 09:28
1.工厂模式
function createDog(name,age){ var d = new Object(); d.name = name; d.age = age; d.sayName = function(){ console.log(this.name); } return d;}
2.构造函数模式
function Dog(name,age){ this.name = name; this.age = age; this.sayName = function(){ console.log(this.name); };}//下面看看几种使用方式//当做构造函数使用var d1 = new Dog("Sunli","28");d1.sayName();//当做普通函数调用/*当在全局作用域中调用一个函时, *this 对象总是指向GLobal对象 *在浏览器中就是window对象 */Dog("Sunli","28");window.sayName();//在另一个对象作用域中调用var d = new Object();Dog.call(d,"Sunli","28");d.sayName();
但构造函数模式存在一个问题,由于在创造对象的时候,每一个新建的对象都是一个实例,这时候,每个方法都要在实例上重新创建一边,但由于这都是同样的一个方法,本质上来说我们希望的是同一个Function实例就可以解决的
原则上可以考虑以下的解决办法。
function Dog(name,age){ this.name = name; this.age = age; this.sayName = sayName;}var sayName = function(){ console.log(this.name);}
但对于封装性来说,sayName作为全局的调用只供Dog来使用,有违全局作用域的初衷,所以,我们可以考虑使用构造函数模式+原型链的模式来创建对象.
4.组合使用构造函数+原型的模式
function Dog(name,age){ this.name = name; this.age = age;}Dop.prototype = { constructor : Dog, sayName :function(){ console.log(this.name); }}var d = new Dog("sunli",'28');d.sayName();var d1 = new Dog("sunliabc",'28');d1.sayName();//sayName是所有实例都能共享的一个方法
此方法是使用最广泛的,认可度最高的
0 0
- JavaScript中的几种模式
- nmcli中的几种模式
- javascript创建对象的几种模式
- javascript创建对象的几种模式
- javascript的几种设计模式
- javascript 几种常见设计模式
- JavaScript创建对象的几种模式
- JavaScript创建对象的几种模式
- JavaScript创建对象的几种模式
- JavaScript的几种继承模式
- Javascript中的几种作用域
- Javascript中的几种继承方式比较
- Javascript中的几种继承方式比较
- javascript中的几种继承方式
- Javascript中的几种继承方式比较
- JavaScript中的几种继承方式
- Javascript中的几种继承方式
- javascript中类继承的几中的几种方法
- Linux查看与修改时区、时间的命令
- 记录微软的BUG一则--Repeater里的RadioButtonList不可以局部刷新
- 网页在线编辑表格|仿Excel|特定表头后超级爽
- PYTHON 面向对象编程
- Android Jni开发之eclipse中NDK部署教程
- JavaScript中的几种模式
- struts2 第一天
- 在进行更新时注意UpdateFile文件中的内容------运维日志1
- uboot的链接文件分析
- U3d架构系列之:FSM有限状态机设计一
- php资料整理
- Mysql:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
- poj2337Catenyms(有向欧拉图:输出欧拉路径)
- Drupal8开发教程:认识.info.yml文件