码迷,mamicode.com
首页 > Web开发 > 详细

js面向对象

时间:2015-06-09 13:14:40      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

大部分时间我们都是在面向过程的,都只不过是使用对象的人,现在学习面向对象是要成为写(改造)对象的人。
 
一、何为对象
  • 对象:属性和方法的集合
  •  属性:其实就是变量(只不过有个归属)
  •  方法:其实就是函数(只不过有个归属)
  •  类:一组同样属性和方法的对象的集合
 
二、
  • 声明对象:var obj=new Object();
  • 直接量,声明了一个空对象:var obj={};
  • 直接量,json:
  • var obj={
    a:"dfsdf",
    b:function (){
        alert(this.a);
    }
    };

     

三、new
工厂模式:
1、一个人的类:
  • function Person(name,sex){
    //工厂模式
    
    //类就是用来创建对象
    var obj={};
    
    this.name=name;
    this.sex=sex;
    this.showName=function (){
    alert(this.name);
    }
    this.showSex=function (){
    alert(this.sex);
    }
    return obj;
    }

     

2、不用new来创建一个新的人的对象
  • var Ben=Person("Ben","false");
  • 类中无变化
 
构造函数模式:
1、一个人的类:
function Person(name,sex){
//构造函数模式

this.name=name;
this.sex=sex;
this.showName=function (){
alert(this.name);
}
this.showSex=function (){
alert(this.sex);
}
}

2、用new创建一个新的人的对象

var Ben=new Person("Ben","false");
四、原型prototype
  • 格式:类型.prototype.属性(方法)=参数(函数function);
    • 类型:可以为 Array\Object\String 等
    • 属性:可自定义
  • 作用:给所有对应类型的变量或属性绑定一个属性(方法),这个方法必须要调用
 
五、instanceof 判断
  • 作用:用来指出对象是否是特定类的一个实例;是则返回false
  • 格式:object instanceof class
    • object 为 arr1、str2、Array ...... 等
    • class 为 Array、Object、String ...... 等
 
六、原型链
例子:
var arr=[1,2,3];
alert(arr.index);
  • undefined也是值
  •  1.首先会看arr这个变量上面有没有index这个属性
  •  2.Array这个类(构造函数)有没有index这个属性
  •  3.Object这个类有没有index这个属性
  •  4.返回undefined并赋值给arr
 
七、继承 apply && call
1、创建一个人类:
function Person(name,sex){   
  this.name=name;
  this.sex=sex;
 
  this.showName=function (){
   alert(this.name);
  }
 }
 
2、定义一个职工类(看call继承和apply继承的区别):
技术分享技术分享
 
3、区别:
  • 使用apply时,参数列表位置必须对应:
    • function Person(name,age){ }
    • Student(name,age,sex){ }
    • 在apply传递
      • Person.apply(this,arguments);
  • 使用call时,参数列表位置可以不对应
    • function Person(name,age){ }
    • Student(age,name,sex){ }
    • 不过在call传递时得位置对应
      • Person.call(this,name,age);
 
注意:call、apply改变this指向
  • call:按顺序的参数
  • apply:第二个参数时一个数组arguments

js面向对象

标签:

原文地址:http://www.cnblogs.com/pan-hello/p/4563027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!