JavaScript面向对象编程

不好的写法
function CreatePerson(name,qq){//构造函数
    /* 
        new构造函数的时候
        系统会自动new一个Object对象,var this = new Object();
        最后再把这个new的this对象返回,return this;
     */

    this.name=name;//属性name
    this.qq=qq;//属性qq

    this.showName=function(){
        alert('我的名字叫:'+this.name);
    }

    this.showQQ=function(){
        alert('我的QQ号是:'+this.qq);
    }
}

var obj=new CreatePerson('user1','1234');
var obj2=new CreatePerson('user2','5678');
alert(obj.showName == obj2.showName);//false
/* 
两个new生成对象的showName是不同的
new的对象多了,内存占用过多性能就会受影响了
*/

好的写法

function CreatePerson(name,qq){//构造函数
    this.name=name;//属性name
    this.qq=qq;//属性qq
}
CreatePerson.propotype.showName=function(){
    alert('我的名字叫:'+this.name);
}
CreatePerson.propotype.showQQ=function(){
    alert('我的QQ号是:'+this.qq);
}

var obj=new CreatePerson('user1','1234');
var obj2=new CreatePerson('user2','5678');
alert(obj.showName == obj2.showName);//true
/*
此时两个obj的showName是相同的
*/

面向对象编程:用构造函数加属性(变量),用原型加方法(函数)。
一样的放到原型中,不一样的放到构造函数中。 因为name、qq是不确定的,而显示的方法时相同的。

面向对象: 使用对象时, 只关注对象提供的功能, 不需要关注其内部的细节, 比如jQuery

css javascript
class 一次给一组元素添加 原型
style 一次给一个元素添加 给对象加的一个方法

原型相当于css中的class, 给一组元素添加, 可以继承共用


var arr = new Array();
对象
模子 产品(成品)
Array() arr
可以 new Array() 不可以 new arr()
Array是一个模子, 不具备实际功能,不能 Array.push() arr是一个产品,是拿来使用的,可以 arr.push()
类有原型,可以 Array.prototype 对象没有原型,不能 arr.prototype
 
posted @ 2015-05-16 19:32 Mr.Leo 阅读(...) 评论(...) 编辑 收藏