龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JavaScript入门之对象与JSON(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
原型对象 原型(prototype),是JavaScript特有的一个概念,通过使用原型,JavaScript可以建立其传统OO语言中的继承,从而体现对象的层次关系。JavaScript本身是基

原型对象

原型(prototype),是JavaScript特有的一个概念,通过使用原型,JavaScript可以建立其传统OO语言中的继承,从而体现对象的层次关系。JavaScript本身是基于原型的,每个对象都有一个prototype的属性来,这个prototype本身也是一个对象,因此它本身也可以有自己的原型,这样就构成了一个链结构。

访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为null的对象(JavaScript的基对象Object的prototype属性即为null),如果此对象仍没有该属性,则返回undefined.

下面我们看一个具体的例子:

  1. //声明一个对象base  
  2. function Base(name){  
  3.     this.name = name;  
  4.     this.getName = function(){  
  5.        return this.name;  
  6.     }  
  7. }  
  8.    
  9. //声明一个对象child  
  10. function Child(id){  
  11.     this.id = id;  
  12.     this.getId = function(){  
  13.        return this.id;    
  14.     }  
  15. }  
  16.    
  17. //将child的原型指向一个新的base对象  
  18. Child.prototype = new Base("base");  
  19.    
  20. //实例化一个child对象  
  21. var c1 = new Child("child");  
  22.    
  23. //c1本身具有getId方法  
  24. print(c1.getId());  
  25. //由于c1从原型链上"继承"到了getName方法,因此可以访问  
  26. print(c1.getName()); 

得出结果:

child

base

由于遍历原型链的时候,是有下而上的,所以最先遇到的属性值最先返回,通过这种机制可以完成重载的机制。

this指针

JavaScript中最容易使人迷惑的恐怕就数this指针了,this指针在传统OO语言中,是在类中声明的,表示对象本身,而在JavaScript中,this表示当前上下文,即调用者的引用。这里我们可以来看一个常见的例子:

  1. //定义一个人,名字为jack  
  2. var jack = {  
  3.     name : "jack",  
  4.     age : 26  
  5. }  
  6.    
  7. //定义另一个人,名字为abruzzi  
  8. var abruzzi = {  
  9.     name : "abruzzi",  
  10.     age : 26  
  11. }  
  12.    
  13. //定义一个全局的函数对象  
  14. function printName(){  
  15.     return this.name;  
  16. }  
  17.    
  18. //设置printName的上下文为jack, 此时的this为jack  
  19. print(printName.call(jack));  
  20. //设置printName的上下文为abruzzi,此时的this为abruzzi  
  21. print(printName.call(abruzzi)); 

运行结果:

jack

Abruzzi

应该注意的是,this的值并非函数如何被声明而确定,而是被函数如何被调用而确定,这一点与传统的面向对象语言截然不同,call是Function上的一个函数,详细描述在第四章。

使用对象

对象是JavaScript的基础,我们使用JavaScript来完成编程工作就是通过使用对象来体现的,这一小节通过一些例子来学习如何使用JavaScript对象:

对象的声明有三种方式:

◆ 通过new操作符作用域Object对象,构造一个新的对象,然后动态的添加属性,从无到有的构筑一个对象。

◆ 定义对象的“类”:原型,然后使用new操作符来批量的构筑新的对象。

◆ 使用JSON,这个在下一节来进行详细说明

这一节我们详细说明第二种方式,如:

  1. //定义一个"类",Address  
  2. function Address(street, xno){  
  3.     this.street = street || 'Huang Quan Road';  
  4.     this.xno = xno || 135;  
  5.     this.toString = function(){  
  6.        return "street : " + this.street + ", No : " + this.xno;     
  7.     }  
  8. }  
  9.    
  10. //定义另一个"类",Person  
  11. function Person (name, age, addr) {  
  12.   this.name = name || 'unknown';  
  13.   this.age = age;  
  14.   this.addr = addr || new Address(nullnull);  
  15.   this.getName = function () {return this.name;}  
  16.   this.getAge = function(){return this.age;}  
  17.   this.getAddr = function(){return this.addr.toString();}  
  18. }  
  19.    
  20. //通过new操作符来创建两个对象,注意,这两个对象是相互独立的实体  
  21. var jack = new Person('jack', 26, new Address('Qing Hai Road', 123));  
  22. var abruzzi = new Person('abruzzi', 26);  
  23.    
  24. //查看结果  
  25. print(jack.getName());  
  26. print(jack.getAge());  
  27. print(jack.getAddr());  
  28.    
  29. print(abruzzi.getName());  
  30. print(abruzzi.getAge());  
  31. print(abruzzi.getAddr()); 

运行结果如下:

jack

26

street : Qing Hai Road, No : 123

abruzzi

26

street : Huang Quan Road, No : 135

精彩图集

赞助商链接