灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:8230回复:1

javascript面向对象程序设计

楼主#
更多 发布于:2014-09-03 10:36
在学习js面向对象编程之前,首先需要知道什么是面向对象。面向对象语言都有类的概念,通过它可以创建具有相同属性和方法的对象。但js并没有类的概念,因此js中的对象和其他语言的对象有所不同。
 
js对象可以定义为:”无需属性的集合,其属性可以是基本值、对象和函数。每个对象都是基于一个引用类型创建的。
js创建对象有以下两种方法:
1、创建一个Object实例:
 
?
1
var person = new Object();

 
 
2、使用对象字面量:
 
?
1
var person ={};

 
 
3、工厂模式:
 
?
1
2
3
4
5
6
7
8
9
function createPerson(name,age,job){
var p = new Object();
p.name=name;
p.age=age;
p.job=job;
return p;
}
var p1=createPerson("jack",22,“front-end Engineer");
var p2=.....;

 
 
4.构造函数模式:
 
?
1
2
3
4
5
6
7
8
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=function(){alert(this.name);};
}
var p1= new Person("jack",22,"front-end Engineer");
var p2=...;

 
 
这里暂停一下,因为构造函数模式比较重要,这里解释一下:这里实际上是经历了以下4个步骤:
(1)创建一个对象;
(2)将构造函数作用域赋给这个对象(所以this将指向这个新创建的对象)
(3)执行里面的代码,为新对象添加属性;
(4)返回新对象;
上面创建的p1和p2都有一个constructor的属性,它指向Person。并且p1和p2即使Person的实例,同时也是Object的实例,因为所有对象都继承自Object。
缺陷:每个方法都要在实例上重新创建一遍,js中的函数是对象,因此可以将函数转移到构造函数的外部:
 
?
1
2
3
4
5
6
7
8
9
10
11
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=sayName;
}
fucntion sayName(){
alert("this.name");
}
var p1=.....;
var p2=....;

 
 
5.原形模式:
我们创建的函数都有一个prototype属性,它是一个指向一个对象的指针。

喜欢0 评分0
怒吼吧蛋蛋
禁止发言
禁止发言
  • 注册日期2011-08-20
  • 发帖数239
  • QQ
  • 火币337枚
  • 粉丝0
  • 关注1
  • 忠实会员
  • 最爱沙发
沙发#
发布于:2014-11-01 00:30
回复(0) 喜欢(0)     评分
游客

返回顶部