Javascript OO 基础概念(一)–构造函数
来源:互联网 发布:多摄像头监控软件 编辑:程序博客网 时间:2024/06/06 01:01
创建对象:
单体模式:
实例化Object()就可以得到一个对象,然后在给它添加方法和属性:
1
var
person =
new
Object();
2
person.name =
"Nicholas"
;
3
person.age = 29;
4
person.job =
"Software Engineer"
;
5
person.sayName =
function
(){
6
alert(
this
.name);
7
};
8
person.sayName();
缺点:在web应用中,一旦大面积以这种单体方式创建对象,重复的代码会爆增。
工厂模式:
用一个函数来进行包装,在函数体内创建一个单体对象,接着就是添加属性和方法,最后该函数返回这个单体对象。
01
function
createPerson(name,age,job){
02
var
o =
new
Object();
03
o.name = name;
04
o.age = age;
05
o.job = job;
06
07
o.sayName =
function
(){
08
alert(
this
.name);
09
}
10
11
return
o;
12
}
13
14
var
person1 =
new
createPerson(
'samir'
,24,
'front-end-engineer'
);
15
var
person2 =
new
createPerson(
'Greg'
,27,
'Doctor'
);
16
17
person1.sayName();
// samir
18
person2.sayName();
// Greg
缺点:每个对象的constructor都是Object,也无法用instanceof判断,更别说prototype上的方法或属性的共享了。
构造函数模式:
构造函数的定义和上边的createPerson的定义主要不同点:
- 没有在内部显示的创建对象
- 直接将属性和方法赋给了this对象
- 没有return语句
1
function
Person(name, age, job){
2
this
.name = name;
3
this
.age = age;
4
this
.job = job;
5
this
.sayName =
function
(){ alert(
this
.name);}
6
}
内部执行步骤:
- 创建一个对象
- 构造函数的作用域赋给新对象,this指向这个新对象
- 执行构造函数中的代码
- 返回新对象
这样,每次实例化都会产生一个新对象,这些新对象都是独立的。且都具有constructor属性(指向构造函数的原型对象的constructor)。
缺点:重复的定义构造函数内的方法,例子中的sayName方法。因为在js中,函数就是对象,一个函数是由new Function();来实例化的。
构造函数和一般函数的区别
区别就是调用的方式不同,构造函数如果不是new方式调用,那么和普通函数几乎一样,内部的this指向的是Global对象,在浏览器中就是window。
- Javascript OO 基础概念(一)–构造函数
- [Javascript OO] 构造函数
- Javascript OO 基础概念(三)–原型继承
- Javascript OO 基础概念(二)-prototype
- javascript 面向对象(一)模拟类的概念--补充--稳妥构造函数式
- JavaScript的OO思想(一)
- 全面OO asp,构造属于自己的WebForm对象!(序言),基础类以及常用函数
- JavaScript面向对象编程[一] 构造函数
- javascript基础笔记一函数
- javascript面向对象技术基础(四)(类、构造函数、原型)
- 补基础之javascript面向对象-构造函数的继承
- JavaScript基础概念理解
- javascript基础概念
- JavaScript基础概念
- C++基础(一)构造函数、析构函数、拷贝构造函数
- javascript学习笔记 (一)-函数基础
- javascript基础一(变量与函数)
- Javascript OO
- 密码发生器--第三届蓝桥杯预赛真题 c++本科组 第8题(我用java做的)
- Compile Hadoop-1.0.2
- Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解
- 网游玩家流失特征提取办法(基于C5.0算法和SPSS Modeler)
- WIN32进程快照以及进程ID和句柄查找
- Javascript OO 基础概念(一)–构造函数
- QSignalMapper分类有序地处理大量信号(就是信号转发机制,A1,A2,A3,....>B>C)
- javaEE之JPA、EJB、JSF代码分析
- 《那些年啊,那些事——一个程序员的奋斗史》——97
- sqlite安装
- Rovio非小鸟题材新游Amazing Alex即将发布
- 使用JavaFX UI控件(0)
- UML类图关系
- 简单asp.net前端代码