JavaScript设计模式-原型模式

Posted yangzhi-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript设计模式-原型模式相关的知识,希望对你有一定的参考价值。

1.javascript中,所有函数(类)和部分原始数据类型(Number,String,Array,Function)具有prototype属性。

2.在类的prototype属性上设置的属性,所有实例共享。

3.实例可修改prototype上的属性。如果修改的是值类型,只是当前实例发生更改。如果修改的是引用类型,则会更改类的prototype属性,影响所有实例。

4.类可以直接设置静态属性,可直接通过 ”类名.属性名 = 值 “设置和访问,实例不可访问。

 

 1 var Person=(function(){
 2     var personCount=0;
 3     function myPerson(name){
 4         this.name=name;
 5         personCount++;
 6         console.log(created new person,current person count:,personCount);
 7     }
 8 
 9     //静态属性,外部可通过Person.country直接访问,实例不可访问
10     myPerson.country=china;
11     myPerson.prototype={
12         //值类型,实例可修改,修改只影响当前实例
13         age:20,
14         //引用类型,实例可修改,修改会影响所有实例
15         address:{
16             province:四川,
17             city:成都
18         },
19         sayHello:function(){
20             console.log(hi,my name is ,this.name,,i am ,this.age);
21         },
22         myAddress:function(){
23             console.log(this.address.province,this.address.city);
24         }
25     };
26     return myPerson;
27 }());
28 
29 console.log(Person.country);
30 
31 var person1=new Person(zhangsan);
32 person1.sayHello();
33 var person2=new Person(lisi);
34 person2.sayHello();
35 
36 //修改值类型原型属性
37 person1.age=18;
38 person1.sayHello();
39 person2.sayHello();
40 
41 //修改引用类型原型属性
42 person1.myAddress();
43 person2.myAddress();
44 person1.address.city=巴中;
45 person1.myAddress();
46 person2.myAddress();

技术分享图片 

以上是关于JavaScript设计模式-原型模式的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之面向对象学习七(动态原型模式和寄生构造函数模式创建自定义类型)

深入理解JavaScript系列(46):代码复用模式(推荐篇)

JavaScript 创建对象 (工厂模式构造函数模式原型模式组合使用构造函数模式与原型模式)

深入理解JavaScript系列(42):设计模式之原型模式

javascript原型模式概念解读

JavaScript设计模式-3.原型模式