javascript 原型法编程prototype编程

1.项目总结:在面向对象编程中,全局对象为隐式window(全局对象this),实现原理是window=this.window=this进行window对this的引用,因此需要我们留意当前对象的this,必要时进行其他方式指代,如that=this;

2.JavaScript是一种函数式编程风格的面向对象语言。

3.prototype主要用来做方法扩展,类的对象(注意,是对象不是类)


一.原型prototype的优点:

①可以构建类方法,类变量

var User = function(id,name){
    'use strict'; //这不是一个普通字符串,他的作用在于指示解释器严格执行语法,严格化编程方式
     this.id = id;
     this.name = name;
     
     this.discription = function(){
         var that = this;
         return 'Name: '+that.name+',ID: '+that.id; 
     }
}
var zs = new User(10,'zhangsan');
var ls = new User(11,'lisi');
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//添加对象变量
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User.prototype.grade = 85;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//添加对象对方法
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User.prototype.getGrade = function(){
    var that = this;
    return this.grade;
 }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//继承对象
User.prototype={
  getName:function(){
     return this.name;
  },
   getId:function(){
     return this.id;
  },
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

从上面的4个例子可以看到,类的原型的改变会导致对象的变量改变,但变量的改变并不会导致所有的改变,一旦对象的变量改变,则类会永远无法影响其改变,这个过程叫做私有化

为了更好的私有化而不影响变量的状态,建议如下操作

User.prototype.grade = 13;
u.grade = User.prototype.grade;

对于方法

User.prototype.info= function(){ 
    return 'ID : '+this.id+',Name : '+this.name;
 }
 
zs.info();

②原型是一个接口,具有默认的实现

当原型中出现和原始类中出现相同的方法或者相同的变量,以原始类为准

User.prototype.discription = function(){ 
    return 'ID='+this.id+',Name='+this.name;
 }
 
zs.discription(); //'Name : zhangsan,ID : 10';


你可能感兴趣的:(javascript 原型法编程prototype编程)