<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
<code>面向對象---初識對象</code>
</title>
<script type="text/javascript">
/*
*表達一個人的完整資訊
*/
/*第一種,三個變量之間沒有必然的聯系----->這個變量屬于誰?
var name="張三";
var age = 18;
var marry=true;
alert("姓名:"+name+":年齡"+age+":"+marry);
/*第二種:建立對象的方式
function Person(){
}
var p1 = new Person();
p1.name="張三";
p1.age = 18;
p1.marry= true;
var p2 = new Person();
alert(p2.name);
alert(p1.name+":"+p1.age+":"+p1.marry);
/*
1:類的定義
文法:(建議首字母大小)
function Person(){
}
在js中,沒有類的定義語句(class),隻有function,每一個function,我們可以認為它是同名的構造函數
function Person---------->它是Person類的構造函數
》》也可以叫做構造器。
2:聲明對象(類的執行個體化)
var 對象 = new 類名(參數1,參數2...);--------->java中 類名 對象名 = new 類名();
var p1 = new Person(); ------------------->Person p1 = new Person();
new------->開辟相應記憶體空間???????
細節一:
function Person(){
alert("Hello world");--------------->執行個體化時,它将被執行。
var p1 = new Person();------------>在執行個體化時,直接執行了Person構造函數。
/*三:對象屬性的使用
文法:
對象.屬性
對象['屬性']
在js中,對象屬性是動态添加的。--------------》java中屬性是在類内部定義好的。
對象的屬性可以是任何資料類型,例:string number object;
/*js中,一切皆對象。 ?_? java中,萬物皆對象。
資料類型是string,但執行個體化了String.
name 也是一個對象。
var name="張三";
重要:三個常用的關鍵字
1:constructor:傳回的是對象的構造器。
2:typeof: 傳回資料類型。
3:instanceof:判斷對象是否是某個類的執行個體。
例:
function Person(){
alert("Hello world");
var p1 = new Person();
console.log(p1.constructor);
console.log(typeof(p1));
console.log(p1 instanceof Person);
/*四 js:對象在記憶體中的存在形式
棧:小 運算速度快。(相對于計算機而言) 對象的位址。
堆:大 運算速度慢。 具體的對象(屬性,函數等)。
》》》》普通的資料類型的值是存儲在棧中(string,number等)。
//儲存的是對象的【位址】。
var p2 = p1; p1把對象的位址指派給了p2,指向同一個堆記憶體中的對象
p2.name="李四";
console.log(p1.name);
表示釋放p2所占的棧空間,不會影響到p1---->它隻是在棧中操作,沒有影響到堆。
p2=null;
alert(p1.name);
*/
</script>
</head>
<body>
</body>
</html>
本文轉自 沉迷學習中 51CTO部落格,原文連結:http://blog.51cto.com/12907581/1926218,如需轉載請自行聯系原作者