添加屬性
當我們象上面那樣使用關鍵字new創(chuàng)建一個對象的時候,一個新的Object被創(chuàng)建了。我們可以在創(chuàng)建之后給這個對象添加屬性(就好像我在上面那樣添加屬性name。而接下來的問題就是如果我們創(chuàng)建了這個對象的另外一個實例,我們得象下面那樣再次給這個新對象添加這個屬性。)
Example DT3 (creates 3 ball objects)
CODE:
function Ball() { } var ball0=new Ball(); // ball0 現(xiàn)在指向了類型Ball的一個新實例 ball0.name="ball-0"; // ball0 現(xiàn)在有一個屬性"name"
var ball1=new Ball(); ball1.name="ball-1";
var ball2=new Ball();
alert(ball0.name); // 輸出 "ball-0" alert(ball1.name); // 輸出 "ball-1" alert(ball2.name); // 哦,我忘記給ball2添加“name”了!
我忘記給ball2添加屬性name了,如果在正式的程序中這也許會引發(fā)問題。有什么好辦法可以自動增加屬性呢?嗯,有一個:使用this關鍵字。this這個詞在function中有特別的意義。它指向了調用函數(shù)的那個對象。讓我們看看下面的另一個示例,這時候我們在構造函數(shù)中添加上這些屬性:
Example DT4
CODE: function Ball(message, specifiedName) { alert(message); this.name=specifiedName; } var ball0=new Ball("creating new Ball", "Soccer Ball"); alert(ball0.name); // prints "Soccer Ball"
請記。菏莕ew關鍵字最終使得構造函數(shù)被執(zhí)行。在這個例子中,它將會運行Ball("creating new Ball", "Soccer Ball");而關鍵字this將指向ball0。 因此,這行:this.name=specifiedName變成了ball0.name="Soccer Ball"。 它主要是說:給ball0添加屬性name,屬性值是Soccer Ball。 我們現(xiàn)在只是添加了一個name屬性給ball0,看起來和上一個例子中所做的很象,但卻是一個更好更具擴展性的方法,F(xiàn)在,我們可以隨心所欲的創(chuàng)建許多帶有屬性的ball而無需我們手動添加它們。而且,人們也希望創(chuàng)建的Ball對象能夠清晰的看懂它的構造函數(shù)并且能夠輕松找出Ball的所有屬性。讓我們添加更多屬性到Ball里。
Example DT5
CODE:
function Ball(color, specifiedName, owner, weight) { this.name=specifiedName; this.color=color; this.owner=owner; this.weight=weigth; } var ball0=new Ball("black/white", "Soccer Ball", "John", 20); var ball1=new Ball("gray", "Bowling Ball", "John", 30); var ball2=new Ball("yellow", "Golf Ball", "John", 55); var balloon=new Ball("red", "Balloon", "Pete", 10);
alert(ball0.name); // 輸出 "Soccer Ball" alert(balloon.name); // 輸出 "Balloon" alert(ball2.weight); // 輸出 "55"
嘿!使用面向對象術語,你能夠說Ball是一個擁有如下屬性的對象類型:name, color, owner, weight。
將對象賦給屬性
我們并沒被限制只能添加形如字符串或者數(shù)字之類的簡單數(shù)據(jù)類型作為屬性。我們也能夠將對象賦給屬性。下面,supervisor是Employee的一個屬性.
Example DT6
CODE:
function Employee(name, salary, mySupervisor) { this.name=name; this.salary=salary; this.supervisor=mySupervisor; } var boss=new Employee("John", 200);
var manager=new Employee("Joan", 50, boss); var teamLeader=new Employee("Rose", 50, boss);
alert(manager.supervisor.name+" is the supervisor of "+manager.name); alert(manager.name+"\'s supervisor is "+manager.supervisor.name);
會輸出什么呢?
就像你在上面這個例子中看到的那樣,manager和teamLeader都有一個supervisor屬性,而這個屬性是類型Employee的一個對象。
出處:藍色理想
責任編輯:moby
上一頁 javascript的函數(shù) [5] 下一頁 javascript的函數(shù) [7]
◎進入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
|