1.物件-成員函式(方法)
比如:我們希望物件不但有屬性,還希望它有行為(行為在程式中要靠函式來體現)
(1)新增speak函式,輸出我是乙個好人;
(2)新增jisuan函式,可以計算從1+…+1000的結果
(3)修改jisuan函式,該方法可以接收乙個數n,計算從1+…+n的結果
(4)新增add成員函式,可以計算兩個數的和
function
person
(name,age)
//新增jisuan函式,可以計算從1+...+1000的結果
this.jisuan=function
(n)return res;}}
var p1=new person("小白",90);
p1.show();
document.writeln("res="+p1.jisuan(10));
2.給乙個物件新增(指定)函式的幾種方式
(1)方式一
function
person()}
var p1=new person(); //建立乙個p1物件
p1.abc(); //呼叫
(2)方式二
function
person
()function
show1
()var p1=new person(); //建立乙個p1物件
p1.abc=show1; //把show1函式,給p1.abc
p1.abc(); //呼叫
思考:window.alert(p1.abc)和window.alert(show1)會輸出什麼?
都會輸出函式:
function
show1
()
(3)方式三
function
person
()var p1=new person();
p1.abc=function
show1
();p1.abc();
(4)方式四
前面的幾種方法有乙個問題:那就是每個物件獨佔函式**,這樣如果物件很多,則會影響效率,js設計者給我們提供另乙個方法:原型法。這樣多個函式可以共享函式**,**如下:
function
dog()
//使用prototype類去繫結乙個函式給shout
dog.prototype.shout=function
()var dog1=new dog();
dog1.shout();
var dog2=new dog();
dog2.shout();
**原理說明:
注意:==號的作用:
(1)當==的兩邊都是字串的時候,則比較內容相等否。
(2)如==兩邊是數字,則數的大小是否相等。
(3)如==是物件或者是物件函式,則比較位址是否相等。
3.針對以下案例輸出是什麼?
(1)案例一
function
person
()function
show1
()var p1=new person();
p1.abc=show1;
show1();
輸出 hello空格;
(2)案例二
function
person
()var name="北京";
function
show1
()var p1=new person();
p1.abc=show1;
show1();
輸出hello北京;
(3)案例三
function
person()}
var p1=new person();
p1.abc();
p1.abc("北京","天津");
第乙個輸出abc 900 undefined undefined;
第二個輸出abc 900 北京 天津;
(4)
function
person()}
var p1=new person();
p1.name="中國"; //動態新增乙個屬性,此時p1.name會代替this.name
p1.abc();
p1.abc("北京","天津");
輸出中國 900 北京 天津; Tree類的建構函式和成員函式
定義乙個tree 樹 類,有成員ages 樹齡 不帶引數的建構函式對ages初始化為1,成員函式grow int years 對ages加上years,age 顯示tree物件的ages的值。tree類宣告如下 class tree 請實現tree類的建構函式和成員函式。裁判測試程式樣例 inclu...
C 建構函式與普通成員函式,建構函式過載
建構函式是類的成員函式,用於初始化類的物件。在c 中,建立物件 類的例項 時會自動呼叫建構函式。它是類的特殊成員函式。在以下方面有所不同 建構函式與類本身具有相同的名稱 建構函式沒有返回型別 建立物件時會自動呼叫建構函式 如果我們未指定建構函式,則c 會自動生成乙個預設建構函式 不帶引數,並且是空主...
建構函式和複製控制成員
建構函式和複製控制成員不能繼承 即建構函式,析構函式,複製建構函式,賦值操作符 每個類定義自己的建構函式和複製控制成員。像任何類一樣,如果類不定義自己的預設建構函式和複製控制成員,就將使用合成版本。派生類建構函式 派生類的建構函式受繼承關係的影響,每個派生類建構函式除了初始化自己的資料成員之外,還要...