javascript 高级编程系列 - 创建对象
2024-08-30 05:26:42
1. 工厂模式
function createPerson(name, age)
{
var obj = {};
obj.name = name;
obj.age = age;
obj.getName = function(){
return this.name;
};
return obj;
} var person = createPerson('leon', 30);
2. 构造函数模式
function Person(name, age)
{
this.name = name;
this.age = age;
this.getName = function(){
return this.name;
};
} var person = new Person('leon', 30 );
3. 原型模式 (多个对象实例之间共享属性值和方法)
function Person(){ } Person.prototype = {
constructor: Person,
name: 'leon',
age: 30,
getName: function(){
return this.name;
}
}; var person = new Person();
4. 组合构造函数和原型模式 (构造函数模式与原型模式的结合,属性在构造函数中进行定义,方法在原型中定义)
function Person(name, age)
{
this.name = name;
this.age = age;
} Person.prototype = {
constructor: Person,
getName : function(){
return this.name;
}
}; var person = new Person('leon', 30 );
5.动态原型模式 (原型模式的改进为了更好的体现封装)
function Person(name, age)
{
this.name = name;
this.age = age;
if( typeof this.getName != 'function'){
Person.prototype.getName = function(){
return this.name;
}
}
}
6. 寄生构造函数模式 (工厂模式与构造函数的结合)
1 function Person(name, age)
2 {
3 var obj = {};
4 obj.name = name;
5 obj.age = age;
6 obj.getName = function(){
7 return this.name;
8 };
9 return obj;
10 }
11
12 var person = new Person('leon', 30);
7. 稳妥构造函数模式 (工厂模式的安全版,无公共属性,方法中无this引用)
1 function Person(name, age)
2 {
3 var obj = {};
4 var name = name;
5 var age = age;
6 obj.getName = function(){
7 return name;
8 };
9 return obj;
10 }
11
12 var person = Person('leon', 30);
最新文章
- class写法[tip]
- Linux 基础笔记
- 不用画线 设置UITableView的全屏分隔线
- Java Web学习笔记-Servle生命周期
- C# 數據事務操作
- BestCoder17 1001.Chessboard(hdu 5100) 解题报告
- 文件/图片,批量上传【神器】--WebUploader
- [OC Foundation框架 - 13] NSValue
- Android Broadcast Receiver注册
- Umbraco Content属性
- WPF中如何获取ControlTemplate中的对象
- bootstrap错误警告信息提示
- Mybatis源码分析-SqlSessionTemplate
- Single linked List by pointer
- hdu5302 构造
- QuickStart系列:docker部署之redis
- Mac下安装Eclipse和Tomcat等
- Android studio was unable to create a local connection in order...
- Codeforces 1006C:Three Parts of the Array(前缀和+map)
- SQL入门之查询入门