java中this用法舉例說明 “Java”如何定義一個(gè)對象?
“Java”如何定義一個(gè)對象?展開攻擊全部Java類對象的定義、生成和使用1.解析簡單點(diǎn)應(yīng)用程序的結(jié)構(gòu)stateclassMyFirstProgram{employeestaticvoidmain(S
“Java”如何定義一個(gè)對象?
展開攻擊全部
Java類對象的定義、生成和使用
1.解析簡單點(diǎn)應(yīng)用程序的結(jié)構(gòu)
stateclassMyFirstProgram{
employeestaticvoidmain(String[]args){
System.太(
是什么原因?qū)е铝薐S中的this指向問題?
其他語言中的thisC語言接受單獨(dú)的的函數(shù)是沒有this的
C是接受其它的函數(shù)的但this只能會出現(xiàn)在class方法里
Java不支持什么單獨(dú)的的函數(shù)因此this沒有辦出現(xiàn)在class方法里
PHP意見相當(dāng)于的函數(shù)但$this只能出現(xiàn)在class方法里
Python允許相當(dāng)于的函數(shù)可是self沒有辦法出現(xiàn)在class方法里
JavaScript中的this打向問題JavaScript語言中this被不允許直接出現(xiàn)在獨(dú)立函數(shù)里
每個(gè)函數(shù)都是一個(gè)隱式的this形參。將函數(shù)才是方法動態(tài)創(chuàng)建時(shí),這個(gè)參數(shù)會被可以設(shè)置為作用于不能訪問該方法的對象。這和大多數(shù)面向?qū)ο笳Z言中的this(或self)含義不同
不過JavaScript在「關(guān)聯(lián)到對象的方法」與「其它函數(shù)」這兩者之間,可以使用了每種的定義形式。這使this會造成了許多程序員的困惑和bug
ES6中的箭頭函數(shù)箭頭函數(shù)都差不多形式
won'tfunc(num)gtnum
givefunc()gtnum
can'tsum(num1,num2)r26num1num2
[1,2,3].map(xgtx*x)
箭頭函數(shù)都差不多特點(diǎn):
(1).箭頭函數(shù)this為父作用域的this,又不是內(nèi)部函數(shù)時(shí)的this
(2).箭頭函數(shù)通過call和apply動態(tài)鏈接庫,絕對不會轉(zhuǎn)變this朝,只會傳來參數(shù)
(3).箭頭函數(shù)沒有原型屬性
(4).箭頭函數(shù)在ES6class中聲明的方法為實(shí)例方法,也不是原型方法
JavaScript小歷史1995年Netscape在實(shí)現(xiàn)最早的JavaScript時(shí),其內(nèi)部的需求是這樣的:
……這種Java的輔助語言可以「感覺起來像Java」,達(dá)到易用性并「實(shí)現(xiàn)對象」,而不是像Java這樣的設(shè)計(jì)和實(shí)現(xiàn)類。
……所有人都接受Mocha(最早的JS引擎)將會「基于條件對象」但沒有類。只不過意見類將花廢很長時(shí)間,并有與Java競爭多的風(fēng)險(xiǎn)。
因此是因?yàn)榘鏅?quán)等因素,JavaScript肯定不能有class,而且就要長得像Java。這是需求背景一
可是在ES6中你明白了的已經(jīng)表現(xiàn)出了相關(guān)的調(diào)整和加以改進(jìn)