JavaScript 物件

JavaScript 物件

JavaScript 中的所有事物都是物件:字串、數值、陣列、函數...

此外,JavaScript 允許自訂對象。

所有事物都是物件

JavaScript 提供多個內建對象,例如 String、Date、Array 等等。 物件只是帶有屬性和方法的特殊資料類型。

布林型可以是一個物件。數字型可以是一個物件。字串也可以是一個物件日期是一個物件數學和正規表示式也是物件陣列是一個物件甚至函數也可以是物件

JavaScript 物件

物件只是一種特殊的資料。物件擁有屬性和方法。

存取物件的屬性

屬性是與物件相關的值。

存取物件屬性的語法是:

objectName.propertyName

這個範例使用了String 物件的length 屬性來獲得字串的長度:

# var message="Hello World!";
var x=message.length;

#在上述程式碼執行後,x 的值將會是:

12

#存取物件的方法

方法是能夠在物件上執行的動作。

您可以透過以下語法來呼叫方法:

objectName.methodName()

這個範例使用了String 物件的toUpperCase() 方法來將文字轉換為大寫:

var message="Hello world!";
var x=message.toUpperCase();

在上述程式碼執行後,x 的值將會是:

HELLO WORLD!

建立JavaScript 物件

透過JavaScript,您能夠定義並建立自己的物件。

建立新物件有兩種不同的方法:

定義並建立物件的實例使用函數來定義對象,然後建立新的物件實例

建立直接的實例

這個範例創建了物件的一個新實例,並向其添加了四個屬性:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
var person=new Object();
person.firstname="jack";
person.lastname="Doe";
person.age=35;
person.eyecolor="blue"; 
document.write(person.firstname + " is " + person.age + " years old.");
</script>
</body>
</html>

替代語法(使用物件literals):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"}
document.write(person.firstname + " is " + person.age + " years old.");
</script>
</body>
</html>

使用物件建構器

本例使用函數來建構物件:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
function person(firstname,lastname,age,eyecolor){
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;
}
myFather=new person("jack","Doe",35,"blue");
document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script>
</body>
</html>

在JavaScript中,this通常指向的是我們正在執行的函數本身,或是指向該函數所屬的物件(運行時)

建立JavaScript 物件實例

一旦您有了物件建構器,就可以建立新的物件實例,就像這樣:

var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");

把屬性加入JavaScript 物件

您可以透過為物件賦值,為已有物件新增屬性:

假設personObj 已存在- 您可以為其新增這些屬性:firstname 、lastname、age 以及eyecolor:

person.firstname="John";
person.lastname="Doe";
person.age=30;
person.eyecolor="blue ";
x=person.firstname;

T在上述程式碼執行後,x 的值將會是:

John

把方法加入JavaScript 物件

方法只不過是附加在物件上的函數。

在建構子函式內部定義物件的方法:

function person(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name){
this.lastname=name;
}
}

changeName() 函式 name 的值賦給 person 的 lastname 屬性。

JavaScript 類別

JavaScript 是物件導向的語言,但 JavaScript 不使用類別。

在 JavaScript 中,不會建立類別,也不會透過類別來建立物件(就像在其他物件導向的語言中)。

JavaScript 是基於 prototype,而不是基於類別的。

JavaScript for...in 迴圈

JavaScript for...in 語句迴圈遍歷物件的屬性。

語法

for (variable in object)
{
执行的代码……
}

注意: for...in 迴圈中的程式碼區塊將針對每個屬性執行一次。


繼續學習
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>点击下面的按钮,循环遍历对象 "person" 的属性。</p> <button onclick="myFunction()">点击这里</button> <p id="demo"></p> <script> function myFunction(){ var x; var txt=""; var person={fname:"Bill",lname:"Gates",age:56}; for (x in person){ txt=txt + person[x]; } document.getElementById("demo").innerHTML=txt; } </script> </body> </html>