JavaScript面向对象学习小结

1,javascript中没有类的概念,是用function来模拟类;

如声明类:function People(){  }

2,声明方法时,People.prototype.say = function(){  alert("hello");  }

如function Student(){   }

Student.prototype = new People();  //student扩展自people,

var s = new Student(); 

s.say(); //若扩展成功,则可以实现say方法;调用的是父类People的say方法;

3,Student.prototype.say = new function(){   alert("stu-hello");  } //子类复写父类的方法,

var s = new Student();

s.say();  //调用的是子类自己的方法;

4,子类想要调用父类的say方法,

var superSay = Student.prototype.say;

Student.prototype.say = function(){

  superSay.call(this);//使用call来调用,弹出的就是父类中的hello;

  alert("stu-hello");

}

5,若在父类中的方法里传入了参数,则也要在子类的方法里传参数;

function People(name){

  this._name = name;

}

function Student(name){

  this._name = name;

}

 People.prototype.say = function(){

  alert("peo-hello"+this._name);

}

Student.prototype.say = function(){

  alert("stu-hello"+this._name);

}

6,实现封装:用小括号括起来

(function(){

  //所有操作

 

  function People(){  }

 

  People.prototype.say = function(){  alert("hello");  }

 

   window.People = People; //封装之后,在外部引用这个方法的话要添加这种接口;否则引用不了

}());   //要加分号;

 封装的步骤:先是小括号,在小括号里添加一个function(){},在function的主体里加上所要执行的操作,最后在大括号外再加一个小括号,是代表执行的意思。

7,另一种方式阐述面向对象:

function Person() {

  var _this = {}; //声明一个空的对象

  _this.sayHello = function(){

    alert("Phello");

  }

  return _this;  //要返回_this;

}

function Teacher(){

  var _this = Person();   //通过将Person赋给_this;达到Teacher也可以调用父类方法的目的;

  var superSay = _this.sayHello;  //想要调用父类 的方法,先赋个值,再利用call;

  _this.sayHello = function(){  

    superSay.call();

    alert("Thello");   

   }   

  return _this;

}

var t = Teacher();

t.sayHello();

 

转载于:https://www.cnblogs.com/RitaLee/p/7195924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值