建構函式就是乙個普通的函式,但是有自己的特徵和用法(建構函式名字的第乙個字母通常大寫)
特點
new命令的作用,就是執行建構函式
建構函式可以帶括號,也可以不帶括號
1、物件名於成員名相同的情況
var
name
=function()
/*物件名於成員名相同的情況*/
var name =
newname()
; console.
log(name.name)
;//undefined
console.
log(
typeof name)
;//string
var myname =
newname()
; console.
log(myname.name)
;//小陳
2、忘記new命令 name就相當於全域性變數
/*忘記new命令 name就相當於全域性變數*/
var name2 =
name()
; console.
log(name2)
;//undefined
console.
log(name)
;//小陳 (全域性變數)
3、防止忘記加new的情況 1、 加use strict 保證了在嚴格模式下執行(嚴格模式中this不能指向全域性變數預設(undefined))
/*防止忘記加new的情況 1、 加use strict 保證了在嚴格模式下執行(嚴格模式中this不能指向全域性變數預設(undefined))*/
function
student()
trycatch
(error
)
4、防止忘記加new的情況 2、加個instanceof(instanceof運算子用來驗證,乙個物件是否為指定的建構函式的例項)
/*防止忘記加new的情況 2、加個instanceof(instanceof運算子用來驗證,乙個物件是否為指定的建構函式的例項)*/
function
weizhi
(x, y)
this
._x = x;
this
._y = y;
} console.
log(
weizhi
(120
,123
)._x)
;//120
console.
log(
newweizhi
(321
,123
)._x)
;//321
使用new命令時,它後面的函式依次執行下面的步驟:
1、new 函式返回的型別
let
student
=function
(name, age)
console.
log(
typeof
newstudent
("小陳",20
));//object
console.
log(
newstudent
("vick",20
)===
"小陳");
//false
2、new.target & object.create()
偶然發現:既然箭頭函式那麼好用那就用一下箭頭函式吧(箭頭函式是不能用來做建構函式, 實際上 js 會禁止你這麼做,如果你這麼做了,它就會丟擲異常這個是乙個沒有意義的行為,並且是有歧義)!
let
student=(
)=>
}let student =
newstudent()
;//uncaught syntaxerror: new.target expression is not allowed here
解決:
let
student
=function()
else
}let student =
newstudent()
;//成功
回歸正題:
let
student
=function()
else
}// student(); //uncaught error: 請使用new命令呼叫
newstudent()
;//成功
當然啦!!!
建構函式作為模板,可以生成例項物件。但是,有時拿不到建構函式,只能拿到乙個現有的物件。我們希望以這個現有的物件作為模板,生成新的例項物件,這時就可以使用object.create()方法:
var student =
}var student = object.
create
(student)
; console.
log(student.name)
;//小陳
console.
log(student.age)
;//20
student.
goclass()
;//箭頭函式&object.create()使用成功
js物件導向收集(一)
s中每建立乙個函式,該函式就會自動擁有乙個prototype屬性,為什麼那?因為最根上的object擁有乙個prototype屬性,而js中所有的物件又都繼承自object,所以js中所有的物件都擁有乙個prototype屬性,而在js中函式也是物件,所以js中每個函式也都有乙個prototype屬...
js物件導向
物件導向是相對於面向過程而提出的程式設計思想 核心在於通過這種方法的設計出來的程式不再是機械的按照設定的步驟去執行,而是按照需要的步驟去執行。舉個例子 乙個人要吃飯,如果用的面向過程的話就必須執行吃飯前的一切行為,而物件導向則可以跳過之前的環節!建構函式 所謂的工廠方式 用來構造抽象物件,通過呼叫建...
js物件導向
js物件導向 一 什麼是物件 物件可以看成乙個屬性的集合。對像一般有屬性和方法構成,方法的實質是函式,而屬性的實質是變數。二 什麼是物件導向 物件導向可以理解為不需要去了解對像的內部結構,就可以使用它。像我們的date 對像的方法可以獲取和設定時間,但我們並不了解其內部原理。三 物件導向 抽風機 抽...