码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript之Object

时间:2015-09-06 23:09:25      阅读:424      评论:0      收藏:0      [点我收藏+]

标签:

两种简单的JavaScript中定义对象的方式:

在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性。

1 var object=new object();
2 //alert(object.username);
3 object["username"]="zhangsan";
4 alert(object.username);
5 delete object.username; //username已经从object对象中删除
6 alert(object.username);

在JavaScript中定义对象最常用的方式:

1 var object ={username:"zhangsan",password:123};

JavaScript中定义对象的几种方式(JavaScript中没有类的概念,只有对象):
1) 基于已有对象扩充其属性和方法:

 1 var object = new Object();
 2 
 3 object.name = "zhangsan";
 4 object.sayName = function(name)
 5 {
 6     this.name = name;
 7     alert(this.name);
 8 }
 9 
10 object.sayName("lisi");

2)工厂方式:

为了使的一个函数对象被多个对象所共享,而不是每一个对象拥有一个函数对象,应该讲对象的成员函数定义在createObject(username, password)之外来调用,而不是将函数放在工厂方法之内。

 1 //使用工厂方法创建对象
 2 function get()
 3 {
 4     alert(this.username + ", " + this.password);
 5 }
 6 
 7 function createObject(username, password)
 8 {
 9     var object = new Object();
10 
11     object.username = username;
12     object.password = password;
13 
14     object.get = get;
15 
16     return object;
17 }
18 
19 var object = createObject("zhangsan", "123");
20 var object2 = createObject("lisi", "456");
21 
22 object.get();
23 object2.get();

3) 构造函数方式:

 1 function Person()
 2 {
 3     //在执行第一行代码前,js引擎会为我们生成一个对象
 4     this.username = "zhangsan";
 5     this.password = "123";
 6 
 7     this.getInfo = function()
 8     {
 9         alert(this.username + ", " + this.password);
10     }
11 
12     //此处有一个隐藏的return语句,用于将之前生成的对象返回
13 }
14 
15 var person = new Person();
16 person.getInfo();

可以在构造对象时传递参数

 1 function Person(username, password)
 2 {
 3     this.username = username;
 4     this.password = password;
 5 
 6     this.getInfo = function()
 7     {
 8         alert(this.username + ", " + this.password);
 9     }
10 }
11 
12 var person = new Person("zhangsan", "123");
13 person.getInfo();

4)原型(“prototype”)方式:

单纯的使用原型方式来创建对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反应到其他对象当中。同时,对象无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。

 1 function Person()
 2 {
 3 
 4 }
 5 
 6 Person.prototype.username = new Array();
 7 Person.prototype.password = "123";
 8 
 9 Person.prototype.getInfo = function()
10 {
11     alert(this.username + ", " + this.password);
12 }
13 
14 var person = new Person();
15 var person2 = new Person();
16 
17 person.username.push("zhangsan");
18 person.username.push("lisi");
19 person.password = "456";
20 
21 person.getInfo();
22 person2.getInfo();

使用原型+构造函数方式来定义对象则可以解决这些问题:

 1 //使用原型+构造函数方式来定义对象
 2 
 3 function Person()
 4 {
 5     this.username = new Array();
 6     this.password = "123";
 7 }
 8 
 9 Person.prototype.getInfo = function()
10 {
11     alert(this.username + ", " + this.password);
12 }
13 
14 var p = new Person();
15 var p2 = new Person();
16 
17 p.username.push("zhangsan");
18 p2.username.push("lisi");
19 
20 p.getInfo();
21 p2.getInfo();

5) 动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。

 1 function Person()
 2 {
 3     this.username = "zhangsan";
 4     this.password = "123";
 5 
 6     if(typeof Person.flag == "undefined")
 7     {
 8         alert("invoked");
 9         
10         Person.prototype.getInfo = function()
11         {
12             alert(this.username + ", " + this.password);
13         }
14 
15         Person.flag = true;
16     }
17 }
18 
19 var p = new Person();
20 var p2 = new Person();

 

JavaScript之Object

标签:

原文地址:http://www.cnblogs.com/daneres/p/4787524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!