物件導向三大特徵:封裝(只能通過物件來訪問方法),繼承(從已有物件),多型
oop組成:方法:物件下面的方法
屬性:物件下面的變數
例子:
var obj=new Object();//建立一個空物件 obj.name=‘小明’; obj.showNmae=function(){ alert(this.name);//關鍵:this的用法 } obj.showName();
工廠方式:物件導向的封裝函式
function createPerson(name){
//1、原料
var obj=new Object();
//2、加工
obj.name=name;
obj.showName=function(){
alert(this.name);
};
//3、出場
return obj;
}
var p1=createPerson(‘小明’);//建立出來的物件,相當於obj
p1.showName();//呼叫物件方法
重點:當new去呼叫一個函式,此時this就是函式建立出來的物件,而且函式的返回值直接就是this啦(隱式返回)
上式可改為:
function createPerson(name){
this.name=name;
this.showName=function(){
alert(this.name);}
}
var p1=new CreatePerson(‘小強’);
p1.showName();
物件的引用
基本型別:賦值的時候只是值的複製
物件型別:賦值不僅是值的傳遞也是引用的傳遞
var a=【1,2,3】;
var b=a;
b.push(4);
alert(a); //【1,2,3,4】
alert(b); //【1,2,3,4】
原型
改寫物件下面公用的方法或屬性,讓公用的方法或者屬性在記憶體中存在一份(提高效能)
//原型:css中的class
//普通方法:css中的style
原型:prototype,要寫在建構函式下面
var arr=【1,2,3,4,5】;
Array.prototype.sum=function(){
var result=0;
for(var i=0;i<this.length;i++){
; result +=this【i】;
}
}
alert(arr.sum())
this 指向問題
事件或者定時器,儘量讓物件導向中的this指向物件
prototype 屬性使您有能力向物件新增屬性和方法。