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是不肯定的,而顯示的方法時相同的。javascript面向對象: 使用對象時, 只關注對象提供的功能, 不須要關注其內部的細節, 好比jQuerycss
css | javascript | |
---|---|---|
class | 一次給一組元素添加 | 原型 |
style | 一次給一個元素添加 | 給對象加的一個方法 |
原型至關於css中的class, 給一組元素添加, 能夠繼承共用java
var arr = new Array();
類 | 對象 |
---|---|
模子 | 產品(成品) |
Array() | arr |
能夠 new Array() | 不能夠 new arr() |
Array是一個模子, 不具有實際功能,不能 Array.push() | arr是一個產品,是拿來使用的,能夠 arr.push() |
類有原型,能夠 Array.prototype | 對象沒有原型,不能 arr.prototype |