首页 > 网站 > WEB开发 > 正文

javascript——面向对象程序设计(3)

2024-04-27 14:13:17
字体:
来源:转载
供稿:网友

javascript——面向对象程序设计(3)

 1 <script type="text/Javascript"> 2         //1、结合使用构造函数模式和原型模式 3         //2、动态原型模式 4         //3、寄生构造函数模式 5         //4、稳妥构造函数模式 6  7         //创建自定义类型的常见方式就是组合使用构造函数模式和原型模式。构造函数模式用于定义是实例属性,而原型模式用于定义 8         //实例属性,而原型用于定义方法和共享的属性。结果,每个实例都会有自己的副本,但同时又共享着对方法的引用,节省内存。 9 10         function Person(name, age, job) {11             var _self = this;12             _self.name = name;13             _self.age = age;14             _self.job = job;15             _self.friends = ["张三", "李四"];16         }17 18         Person.PRototype = {19             constructor: Person,20             sayName: function () {21                 alert(this.name);22             }23         }24 25 26         var person1 = new Person("徐磊", 23, "IT");27         var person2 = new Person("刘德华", 55, "歌手");28 29         person1.friends.push("张学友");30         alert(person1.friends);31         alert(person2.friends);32         alert(person1.friends === person2.friends);//false33         alert(person1.sayName === person2.sayName);//true34 35         //2、动态原型模式36         function Person(name,age,job){37             this.name=name;38             this.age=age;39             this.job=job;40             if(typeof this.sayName !="function"){41                 Person.prototype.sayName=function(){42                     alert(this.name)43                 }44             }45         }46 47         //3、寄生构造函数模式48         function Person(name,age,job) {49             var o=new Object();50             o.name=name;51             o.age=age;52             o.job=job;53             o.sayName=function(){54                 alert(this.name);55             }56             return o;57         }58 59         //这个模式可以在特殊情况下为对象创建构造函数。60         function SpecialArray() {61             var values=new Array();62             values.push.apply(values,arguments);63             values.toPiedString=function(){64                 return this.split('|');65             }66             return values;67         }68 69         var colors=new SpecialArray("red","blue","green");70         colors.toPiedString();//"red|blue|green"71 72 73         //4、稳妥构造函数模式74         //稳妥构造函数的模式是遵循寄生构造函数的模式,但是有两点不同:1、新创建对象的实例方法不引用this;2、不使用new操作符调用构造函数75         function Person(name,age,job) {76             var o=new Object();77             //这里可以定义私有变量78             //添加方法79             o.sayName=function(){80                 alert(this.name);81             }82             return o;83         }84 85         var friends=Person("xulei",23,"IT");86         friends.sayName();//xulei87 88 89     </script>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表