js代码中可以有java的对象吗_js原型对象与Java类的区别
標(biāo)簽:
在我學(xué)習(xí)Javascript的原型對(duì)象時(shí),我總是不自覺地拿Java的類思想來做比較,時(shí)間久了,我漸漸認(rèn)識(shí)到二者有巨大的不同。
首先,類是不能直接當(dāng)方法來運(yùn)行,它最簡便的方式是調(diào)用其靜態(tài)方法;而原型對(duì)象本身就是一個(gè)方法體,它可以直接運(yùn)行。二者在構(gòu)造對(duì)象的過程中,js可以扮演兩種角色,一個(gè)可以將原型對(duì)象當(dāng)方法來使用,才接觸js時(shí),都是以這種形式來使用,即萬物皆方法體,像c;另一個(gè)是模仿面向?qū)ο蟮奶匦?#xff0c;為原型對(duì)象定義屬性,運(yùn)用構(gòu)造器時(shí),將構(gòu)造器構(gòu)造的對(duì)象的指針指通過原型鏈指向原型對(duì)象的屬性,從而實(shí)現(xiàn)面向?qū)ο缶幊痰男问健F鋵?shí),做個(gè)有趣的實(shí)驗(yàn),定義一個(gè)原型對(duì)象,為其定義一些屬性,也為其定義可自動(dòng)執(zhí)行的部分代碼,如:
function test(){
//定義兩個(gè)屬性
this.pro1="屬性1";
this.pro2="屬性2";
//再定義部分可自動(dòng)執(zhí)行的代碼
alert("原型對(duì)象中代碼被執(zhí)行了!");
}
test(); //當(dāng)方法體來用,可以執(zhí)行內(nèi)部代碼,但屬性無法訪問
alert(new test().pro1); //方法體在構(gòu)造時(shí)內(nèi)部代碼執(zhí)行了一遍,并且實(shí)例對(duì)象通過原型鏈的生成可以訪問其中屬性
而這點(diǎn),允許混雜的現(xiàn)象在Java類中是絕對(duì)不被允許的,這也可以體現(xiàn)為什么js是基于對(duì)象,而不能被稱為絕對(duì)規(guī)范的完全面向?qū)ο?#xff0c;與其說js“模仿”了面向?qū)ο蟮氖褂盟枷?#xff0c;我更傾向于說它是借用了面向?qū)ο蟮乃枷搿H绻环N新的優(yōu)秀的編程思想被創(chuàng)造出來,js一樣能憑借它的靈活模仿出來,而那些強(qiáng)類型的編程語言很可能就只能。。。。。。
標(biāo)簽:
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的js代码中可以有java的对象吗_js原型对象与Java类的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么python用不了中文_【TK例子
- 下一篇: 为什么java需要静态类_为什么Java