本文是在學習js所做的學習筆記,所有筆記內容請看:js學習筆記
<
!doctype html>
"en"
>
"utf-8"
>
title<
/title>
建構函式就是乙個普通的函式,建立方式和普通函式沒有區別,
不同的是建構函式習慣上首字母大寫
建構函式和普通函式的區別就是呼叫方式的不同
普通函式直接呼叫,而建構函式需要使用new關鍵字呼叫
建構函式的執行流程,
1.會立刻建立乙個新的物件
2.將新建的物件設定為函式中的this
,在建構函式中可以使用this來
引用新建的物件
3.逐行執行函式中的**
4.將新建的物件作為返回值返回
使用同乙個建構函式建立的物件,我們成為一類物件,也將乙個建構函式
成為乙個類。
我們將通過乙個建構函式建立的物件,稱為是該類例項
this的情況:
1.當以函式的形式呼叫時,this就是window
2、當以方法的形式呼叫時,誰呼叫方法this就是誰
3.當以建構函式的形式呼叫時,this就是新建立的那個物件
function
person
(name,age,gender)
}var per =
newperson
('swk',18
,'男');
var per2=
newperson
('ytj',16
,'女');
function
dog(
)var dog=
newdog()
; 使用instanceof 可以檢查乙個物件是否是乙個類(建構函式)的例項
語法:物件 instanceof 建構函式
如果是,則返回true
,否則返回false
所有的物件都是object的後代
任何物件和instanceof 檢查都會返回true
<
/script>
<
/head>
<
!doctype html>
"en"
>
"utf-8"
>
title<
/title>
建立乙個person建構函式
-在person建構函式中,為每乙個物件新增乙個sayname方法
目前我們的方法是在建構函式內部建立的,也就是建構函式每執行
一次就會建立乙個新的sayname方法
也就是所有例項的sayname都是唯一的。
這樣就導致了建構函式執行一次就會建立乙個新的方法,
執行1000次就會建立1000個新的方法,而1000個方法都是一樣的
*/// 在每個函式中定義乙個方法
function
person
(name,age,gender)
}// 將sayname方法在全域性作用域中定義
function
fun(
)function
person
(name,age,gender)
}// 建立person的例項
var per1=
newperson
('swk',18
,'男')/*
將函式定義在全域性作用域中,汙染了全域性作用域的命名空間
而且定義在全域性作用域中也很不安全
*/<
/script>
<
/head>
<
/body>
<
!doctype html>
"en"
>
"utf-8"
>
title<
/title>
/* 建立乙個person建構函式
-在person構造還能輸中,為每乙個物件新增乙個sayname方法
目前我們的方法是在建構函式內部建立的,也就是建構函式每執行
一次就會建立乙個新的sayname方法
也就是所有例項的sayname都是唯一的。
這樣就導致了建構函式執行一次就會建立乙個新的方法,
執行1000次就會建立1000個新的方法,而1000個方法都是一樣的
*/// 在每個函式中定義乙個方法
function
person
(name,age,gender)
}// 將方法寫在全域性作用域中那個,如下
function
fun(
)function
person
(name,age,gender)
}// 建立person的例項
var per1=
newperson
('swk',18
,'男'
)
將函式定義在全域性作用域中,汙染了全域性作用域的命名空間
而且定義在全域性作用域中也很不安全
c primer 學習筆記22類的建構函式
建構函式是特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。class sales item private std string isbn unsigned units sold double revenue 建構函式可以被過載 可以...
分離構造器 2 2
通過new操作符構建乙個物件,一般經過四步 a.建立乙個新物件 b.將建構函式的作用域賦給新物件 所以this就指向了這個新物件 c.執行建構函式中的 d.返回這個新物件 最後一點就說明了,我們只要返回乙個新物件即可。其實new操作符主要是把原型鏈跟例項的this關聯起來,這才是最關鍵的一點,所以我...
建構函式 拷貝建構函式 賦值建構函式
class和struct很大乙個區別在於,c除了成員的訪問控制許可權,struct中的成員預設是public,而class中的field預設是private class還有乙個special的地方是它有建構函式 constructor。建構函式是class中的一員,和成員變數 其他成員函式一起構成乙...