A-A+

javascript面向对象编程和对象访问控制实例

2016年01月27日 编程技术 暂无评论

本文章介绍了JS面向对象编程和对象访问控制实例,有需要学习的朋友可以参考一下。

Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。

那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢?

一、 生成对象的原始模式

假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性,代码如下:

  1. var Cat = {  
  2.   name : '',  
  3.   color : ''  
  4. }  

现在,我们需要根据这个原型对象的规格(schema),生成两个实例对象,代码如下:

  1. var cat1 = {}; // 创建一个空对象  
  2.   cat1.name = "大毛"// 按照原型对象的属性赋值  
  3.   cat1.color = "黄色";  
  4. var cat2 = {};  
  5.   cat2.name = "二毛";  
  6.   cat2.color = "黑色";  

好了,这就是最简单的封装了,把两个属性封装在一个对象里面。但是,这样的写法有两个缺点,一是如果多生成几个实例,写起来就非常麻烦;二是实例与原型之间,没有任何办法,可以看出有什么联系。

对象访问控制实例,代码如下:

  1. function Cat(name, age){   
  2.     var name = name;   
  3.     this.age = age||1;   
  4.     this.setName = function(sName){   
  5.         this.name = sName;   
  6.     }   
  7.     this.getName = function(){   
  8.         return this.name;   
  9.     }   
  10.     this.setAge = function(nAge){   
  11.         this.age = nAge;   
  12.     }   
  13.     this.getAge = function(){   
  14.         return this.age;   
  15.     }   
  16. }   
  17.     
  18. Cat.prototype.say = function(){   
  19.     console.log('I am '+this.name+', I am '+this.age);   
  20. }   
  21.     
  22. var kk = new Cat('kk');   
  23. console.log(kk.name);//undefined @private   
  24. kk.setName('deeka');   
  25. console.log(kk.getName()); // deeka   
  26. kk.setAge(2);   
  27. console.log(kk.getAge()); // 2   
  28. kk.age = 3;   
  29. console.log(kk.age);//3 @public   
  30. kk.say(); // I am deeka, I am 3  
标签:

给我留言