博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js创建对象的几种方式
阅读量:4697 次
发布时间:2019-06-09

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

一、工厂模式

function createStudent(name,age){             var o=new Object();            o.name=name;            o.age=age;            o.myName=function(){                alert(this.name);                                };            return o;                     }         var student1 =createStudent('yjj',15);         var student2 = createStudent('fff',18);//问题: 工厂模式没有解决对象识别的问题,不能确定一个对象的类型

二、构造函数模式

function Student(name,age){            this.name=name;            this.age=age;            this.myName=function(){                alert(this.name);                                };             }         var student1_ = new Student('yjj',15);         var student2_ = new Student('fff',18);                           //new 关键字的作用         //1.创建一个对象         //2.将构造函数的作用域赋给新对象,this指向了新对象         //3.执行构造函数中的代码,为新对象添加熟悉         //4.返回新对象                  //问题: 每个方法都要在每个实例上重新创建一遍

三、构造函数模式+原型模式

function Student(name,age){             this.name=name;            this.age=age;                     }         Student.prototype.myName=function(){                alert(this.name);                             };                      var student1__ = new Student('yjj',15);         var student2__ = new Student('fff',18);         student1__.myName();

四、动态原型模式

function Student(name,age){             this.name=name;            this.age=age;            if(typeof this.myName!="function"){
//第一次进入 Student.prototype.myName=function(){ alert(this.name); }; } } var student1___ = new Student('yjj',15); student1___.myName();

五、寄生构造函数模式

function Student(name,age){            var o = new Object();            o.name=name;            o.age=age;            o.myName=function(){                alert(this.name);                                };                                return o;          }         var student1____ = new Student('yjj',15);         student1____.myName();         //这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象。

六、稳妥构造函数模式

function Student(name,age){            var o = new Object();            var name=name;            var age=age;            o.myName=function(){                alert(name);                                };                                return o;          }          var student1_____ = new Student('yjj',15);         student1_____.myName();         //没有公共属性,而且其他方法也不用引用this的对象

 

转载于:https://www.cnblogs.com/yangjingqi/p/4337420.html

你可能感兴趣的文章
memcached 细究(三)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>
不把DB放进容器的理由
查看>>
OnePage收集
查看>>
Java parseInt()方法
查看>>
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>
[NYIST15]括号匹配(二)(区间dp)
查看>>
json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
查看>>
洛谷 P1101 单词方阵
查看>>
Swift DispatchQueue
查看>>
C#和JAVA 访问修饰符
查看>>
小甲鱼OD学习第1讲
查看>>
HDU-1085 Holding Bin-Laden Captive-母函数
查看>>
php提示undefined index的几种解决方法
查看>>