Object 物件導向程式設計(妙味課堂版)

2021-09-01 14:00:47 字數 4294 閱讀 9233

zccst筆記

一、物件導向初步

工廠方法

function createperson(name,***)

p.show*** = function()

//3return p;

}p1 = createperson('blue','male');

p2 = createperson('leo','female');

缺點:1,沒有new。

2,每個物件都有一套自己的函式——浪費資源 解決:使用原型

alert(p1.showname == p2.showname);//false

真正的面相物件

//例如

function createperson(name,***)

createperson.prototype.showname = function()

createperson.prototype.show*** = function()

alert(p1.showname == p2.showname);//true

//再例如:

var arr1 = new array(1,2,3,4);

var arr2 = new array(1,2,3,4,5);

array.prototype.sum = function()

return ret;

}alert(arr1.sum());

alert(arr2.sum());

string.prototype.trim = function()

需要注意的幾點:

1,建構函式就是類,類就是建構函式

echo typeof date; //function

function() show

var show = function()

//實際上是

var show = new function("alert('abc')");//alert(typeof show);//function

typeof array,date//都是function

typeof array(), date()//都是object

alert(typeof array);//function

console.log(array); //[undefined]

alert(typeof date); //function

console.log(date); //date()

alert(typeof array());//object

console.log(array()); //

alert(typeof date()); //string

console.log(date()); //mon nov 26 2012 18:45:27 gmt+0800

alert(typeof (new array()));//object

console.log(new array()); //

alert(typeof (new date())); //object

console.log(new date()); //date

alert(typeof math);//function

console.log(math); //math {}

2,原型優先順序(可模擬css的行間樣式和class)

array.prototype.a = 12;

var arr = [1,2,3];

alert(arr.a); //12

arr.a = 5;

alert(arr.a); //5

delete arr.a;

alert(arr.a); //12

二、容易錯亂的this

this關鍵字

在兩種情況下回引起錯亂:定時器和事件中。

【北風版】解釋:內部函式中的this是全域性window。外部函式的this是當前函式域。

var box =

};//alert(box.getuser());

var box = }};

//alert(box.getuser()());

//內部函式中的this是全域性window。外部函式的this是當前函式域。

//解決辦法一:使用_this。

var box = }};

alert(box.getuser()());

//解決辦法二:使用call

alert(box.getuser().call(box));

1,定時器

原因:定時器是全域性變數

function aaa(),1000);

}aaa.prototype.show = function()

var obj = new aaa();

obj.show();

2,事件中

原因:物件和dom物件混在一起

解決辦法:

var _this = this;

this.xx = function()

例項

function bbb()

}bb.prototype.show = function()

window.onload = function()

三、繼承

js繼承通過call

function person(name,***)

person.prototype.showname = function()

person.prototype.show*** = function()

function worker(name,***,job)

//通過原型繼承父類的方法。原型鏈

worker.prototype = person.prototype;

//是引用。對worker的修改影響了person的方法。換成

for(var i in person.prototype)

worker.prototype.showjob = function()

var om1 = new worker('blue','男', '打雜的');

om1.showjob();

總結:建構函式偽裝:繼承父類的屬性

通過原型鏈:繼承父類方法

需要注意的幾點:

1,引用

本質就是指向同一塊區域。js所有物件全是引用。

var arr1 = [1,2,3];

var arr2 = arr1;

arr2.push(4);

alert(arr1);

alert(arr2);

//解決辦法之一:通過for迴圈

2,instanceof

var arr1 = new array();

alert(arr1 instanceof object); //true

alert(arr1 instanceof array); //true

alert(arr1 instanceof function); //false

alert(arr1 instanceof date); //false

alert(typeof arr1); //object

四、js系統物件

1,宿主物件(由瀏覽器提供)

主要是document和widow。

2,本地物件(非靜態物件)

var arr = new array(); //正常

常見:object, function, array, string, boolean, number, date, regexp, error

3,內建物件(靜態物件)

var omath = new math();//報錯

不需要例項化,可以直接用。比如熟悉函式。

常見:math,global

物件導向 object

object 是所有物件的直接後者間接父類,傳說中的上帝。該類中定義的肯定是所有物件都具備的功能。object類中已經提供了對物件是否相同的比較方法。如果自定義類中也有比較相同的功能,沒有必要重新定義。只要沿襲父類中的功能,建立自己特有比較內容即可。這就是覆蓋。class demo extends ...

物件導向 Object類

一.object類中的equals 方法 equals object obj 指示其它某個物件是否與此物件 相等 返回值型別是boolean oblect類中的equals方法 public boolean equals object obj 姓名和年齡都同樣,為同乙個人 假設要比較兩個人是否為同乙...

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...