10JavaScript函数对象的prototype

 1 <script type="text/javascript">
 2 
 3 //  prototype:原型就是很多对象共享的一个内容,
 4 
 5     //-----------------为什么要有prototype原型对象?有什么用?--------------
 6                 function Person(uname, uage, uemail) {
 7                 //当在该构造函数中,通过this为对象注册成员的时候,那么将来创建的每个对象,都会保存一份这些成员的副本。
 8                     this.userName = uname;
 9                     this.userAge = uage;
10                     this.userEmail = uemail;
11 
12                     this.sayHi = function () {
13                         alert('Hi~_^大家好!,我叫:' + this.userName);
14                     };
15 
16                     this.sayHello = function () {
17                         alert('Hello 大家好,我今年' + this.userAge + '岁了。');
18                     };
19 
20                     this.sayMorning = function () {
21                         alert('good morning!');
22                     };
23                 }
24 
25 
26                 //问题:p1 p2 p3创建的对象 每个对象都会包含3个属性 3个方法 占用内存空间
27                 //其实是合理的,p1对象改变自己的属性不能影响到其他对象的成员,但是对于方法都保存一份就没有必要了
28                 //当我们写一个对象的时候,对于对象中的属性单独创建一份没问题,但没必要没每个方法都保存一份空间
29                 var p1 = new Person('张三', 18, 'mll@yahoo.com');
30                 p1.userName = "fsdfsdf";
31 
32                 var p2 = new Person('李四', 19, 'pwb@yahoo.com');
33 
34                 var p3 = new Person('王五', 20, 'qg@yahoo.com');
35 
36 
37                  function Person(email) {
38             this.userEmail = email;
39         }
40 
41       //把对象的所有的方法都注册到了Person.prototype对象上。(把方法注册到Person的原型上)
42         Person.prototype.sayHi = function () {
43             alert('Hi~我叫' + this.userName);
44         };
45 
46         Person.prototype.sayHello = function () {
47             alert('Hello ! 我:' + this.userAge + '岁了。');
48         };
49 
50         Person.prototype.userName = '张三';
51         Person.prototype.userAge = 18;
52 
53         Person.prototype.sayHi();
54         Person.prototype.sayHello();
55    
56 
57 

      //通过原型为一个已经编写好的类型增加一个扩展方法
      String.prototype.sayHello = function () {
      alert('我是字符串!!!');
      };

      String.prototype.addStyle= function (str) {
      return "★" + str + "★";
      };

      var msg = 'hello';
      msg.sayHello();
      alert(msg.addStyle(msg));




58 59 60 61 62 </script>

 

posted @ 2016-02-18 17:28  男儿当自强!  阅读(165)  评论(0编辑  收藏  举报