js面向对象及函数原型

来源:互联网 发布:大数据数据库设计 编辑:程序博客网 时间:2024/06/06 01:42

面向对象



什么是对象:对象是一个整体,对外提供一些操作。
什么是面向对象:使用对象时,只关注对象提供的功能而不关注其具体实现,比如jQuery
面向对象特点:封装,继承,多态


对象组成

方法----函数:过程、动态
属性----变量:状态、静态
var a = new object();
var b=12;    //变量:自由
a.name='hkj';    //属性:属于一个对象


function show(){    //函数:自由
    alert('a');
}
a.fn = function(){    //方法:属于某个变量
    alert('a);
}
a.onclick=function(){***}    //事件函数


this:指向当前对象
a.show=function(){
    alert(this.name);     //this为a
}




工厂模式:

function createPerson(name){    
    var obj=new Object();
    obj.name=name;    //原料
    obj.showName=function(){    //加工
        alert('我的名字叫'+this.name);
    };
    return obj;    //出厂
}
var p1 = createPerson('hkj');
p1.showName();
工厂模式缺陷:没有new,每个对象的函数不同,占用资源。
var a = function(){**};
var b = function(){**};
alert(a==b);    //a与b不等,每次重新创建一个函数对象


工厂模式改进:

function CreatePerson(name){    //构造函数,首字母大写,用new创建对象
    this.name=name;
    this.showName=function(){
        alert('我的名字叫'+this.name);
    };
    //创建和返回由系统完成
}
var p1 = new CreatePerson('hkj');
var p2 = new CreatePerson('tom');
p1.showName();
p2.showName();


function show(){
    alert(this);
}
show();    //window对象
new show();    //系统创建对象并用this指向该对象


工厂模式再改进:

类:不具备实际功能,用来创建对象,相当于模版。
对象: 真正具有功能的东西,由类构造出来,相当于成品。
原型(prototype):代表所有对象。
Array.prototype.show=function(){
    ***;
}
var a1=new Array(2,2,2);
var a2=new Array(1,1,1);
a1.show(); a2.show();
alert(a1==a2);    //true都等于Array.prototype.show


function CreatePerson(name){    //构造函数
    this.name=name;     //添加属性
}
CreatePerson.prototype.showName = function(){     //添加方法
    alert(this.name);
}
var p1 = new CreatePerson('hkj');
var p2 = new CreatePerson('tom');
alert(p1.showName==p2.showName);    //true
原创粉丝点击