javascript面向对象

<h2>this</h2>
1.普通函数

function t(){
this.age=23;
console.log(this);
}
t()//调用者为null,this为null时js将this指向了window,在es5之后会抛出异常

2.作为对象的方法来调用

var intro=function(){return "mynameis"+this:name}
var dog={name:"123",intro:intro}
dog.intro();
var cat={name:"789"}
cat.intro=dog.intro
cat.intro();//789

3.构造函数

function cat(name){
this.name=name;
this.color=color;
}
//方法new的瞬间,得到一个空对象,运行this指向空对象,运行方法{}.name=name;
var cat=new cat()//得到一个新对象 从而触发了一个函数

4.通过call和apply可以改变this的指向

函数名.call($,$,$);
1.将函数的this指向对象
2.运行函数,传参数$,$,$;
函数名.apply(obj, array[]);

5.闭包

function t(){
var age=23;
return function(){
console.log(age++);
}
}
var tmp=t();
var age=1000;
tmp();//

6.构造方法

function Dog(name,color){
this.name=name;
this.color=color;
}
var dog=new Dog("donggua","shaoyan");
console.log(dog);

7.私有属性

function girl(name,lover){
var nm=name;
var love=lover;
this.getlove=function(){
    return love;
}
this.getname=function(){
return nm;
}
}
var girl=new girl("123","234");
console.log(girl);
console.log(girl.getlove());

8.原型继承

对着猫来画老虎
function cat(){
  this.climb=function(){
  alert("ps")
}
}
function Tiger(){
this.hunt=function(){
  alert("dl");
}
}
Tiger.prototype=new cat();
var tiger=new Tiger();
tiger.hunt();
tiger.climb()
//console.log(tiger)
Tiger.prototype.song=function(){
  alert("789")
}
tiger.song();

9.原型冒充

function good(){
    this.iq=120
this.study=function(){
  console.log("gao")
}
}
function bad(){
  good.call(this);
    this.play=function(){
    console.log("mhxy")
}
}
var good=new good();
var bad=new bad();
good.study();
bad.play();
bad.good();

10.原型复制

function good(){
    this.iq=120
this.study=function(){
  console.log("gao")
}
}
function bad(){
    this.play=function(){
    console.log("mhxy")
}
this.extend=function(obj){
  for(var k in obj){
      this[k]=obj[k];
}
}
}
var good=new good();
var bad=new bad();
bad.extend(good);
console.log(bad);

11.函数也是一种对象
$("#id")
$.ajax

推荐阅读更多精彩内容