let stu=}//取資料console.log(stu.name)
console.log(stu['age'])
stu.f()
functionperson()
}let o=new
person()
o.f()
//let o=new
object()
//新增
o.name='tom'o.f=function
() //
呼叫console.log(o.name)
o.f()
js通過原型來實現繼承。
每乙個物件都含有原型的引用,當查詢屬性時,若物件本身不具有該屬性,則會查詢原型上是否有該屬性。
字面量和原型
const stu1=const stu2=
object.setprototypeof(stu1,stu2)
console.log(stu1.name)
console.log(stu1.age)
構造器和原型
每乙個函式都有內建的原型物件
functiontestfun()
testfun.prototype.word='hi'testfun1=new
testfun()
testfun2=new
testfun()
//所有通過testfun函式建立的物件都能讀取該函式的屬性
console.log(testfun1.word)
console.log(testfun2.word)
優先使用函式內的方法和屬性,如果沒有再去原型裡找
functiontestfun()
}testfun.prototype.wordadd=function
()testfun1=new
testfun()
console.log(testfun1.wordadd())
物件和函式原型之間的引用關係是在物件建立是建立的,
所以在建立後如果使用字面量方式重寫了原型裡的資料,那麼之前建立的物件仍然使用的是老的原型引用
functiontestfun()
testfun.prototype.wordadd = function
() testfun1 = new
testfun()
//通過字面量重寫wordadd方法
testfun.prototype =
}testfun2 = new
testfun()
console.log(testfun1.wordadd())
console.log(testfun2.wordadd())
結果:ahi
ahello
constructor
每乙個函式的原型物件都具有乙個constructor屬性,該屬性指向函式本身
functiontestfun()
testfun2 = new
testfun()
console.log(testfun2.constructor===testfun) //
true
還可以用物件例項的constructor屬性再建立乙個新物件
functiontestfun()
testfun.
testfun1 = new
testfun()
'b'console.log(testfun1.word)
//新建立的物件只能說明是從testfun函式來的,物件是空物件,包括原有的原型也沒了
testfun2=testfun1.constructor()
把例項化賦給需要被繼承函式的使用原型
functiontestfun()
function
testfun2()
testfun2.prototype=new
testfun()
test2fun =new
testfun2()
console.log(test2fun.word)
//a
js物件導向
物件導向是相對於面向過程而提出的程式設計思想 核心在於通過這種方法的設計出來的程式不再是機械的按照設定的步驟去執行,而是按照需要的步驟去執行。舉個例子 乙個人要吃飯,如果用的面向過程的話就必須執行吃飯前的一切行為,而物件導向則可以跳過之前的環節!建構函式 所謂的工廠方式 用來構造抽象物件,通過呼叫建...
js物件導向
js物件導向 一 什麼是物件 物件可以看成乙個屬性的集合。對像一般有屬性和方法構成,方法的實質是函式,而屬性的實質是變數。二 什麼是物件導向 物件導向可以理解為不需要去了解對像的內部結構,就可以使用它。像我們的date 對像的方法可以獲取和設定時間,但我們並不了解其內部原理。三 物件導向 抽風機 抽...
JS物件導向
一 js物件導向 js是一門指令碼語言,不是物件導向的語言,它沒有類的概念,有物件的概念。物件導向程式設計 oop 和面向過程程式設計 opp 的區別 面向過程以 事件為中心,將完成整個事件拆分成若干個步驟,按照步驟依次執行。物件導向以 事物為中心,完成某個需求需要哪些事物參與,側重點在於每個事物的...