- 相關(guān)推薦
perl- javascript中class的機制
javascript是如何實(shí)現class的?下面YJBYS小編為大家講解!
FAQ
perl公眾號為什么要談javascript?
瀏覽器客戶(hù)端是通過(guò)javascript對前端數據進(jìn)行處理,服務(wù)器端是沒(méi)有權利知道明文密碼的。要分析Webqq不懂javascript不行。再對加密過(guò)程進(jìn)行比喻下,y是秘鑰1以及秘鑰2以及其他參數p的表達式。我們自己有一把鑰匙,服務(wù)器也有一把鑰匙,這2把鑰匙能開(kāi)同一個(gè)門(mén),但是2把鑰匙長(cháng)得不一樣。
為什么只講class?
class便于代碼的管理,有了class讓開(kāi)發(fā)庫成為了可能,只需要對外提供API就好了。 掌握語(yǔ)言的核心就是理解這門(mén)語(yǔ)言的class。
Javascript的class
正如perl5一樣,javascript 本身不支持面向對象,沒(méi)有訪(fǎng)問(wèn)控制符public,private, 沒(méi)有定義類(lèi)的關(guān)鍵字class。Javascript 還是很靈活的,用一些變通的方法,來(lái)制作類(lèi)。
構建類(lèi)
函數法的類(lèi),在函數中使用this,看到this就是class
function L() {
this.n = null;
this.e = 0;
this.d = null;
this.p = null;
this.q = null;
this.dmp1 = null;
this.dmq1 = null;
this.coeff = null
}
生成對象
函數法生成對象,使用new關(guān)鍵字
var obj=new L();
JS還支持以字面值形式:創(chuàng )建一個(gè)自定義對象:
{ property1:value1, property2:value2, propertyN:valueN }
//場(chǎng)景
var obj1={property1: value1, property2:value2}
return {property1: value1, property2:value2}
添加類(lèi)的屬性和方法
使用prototype關(guān)鍵字,添加類(lèi)的屬性和方法
function W(t) {
return t.modPowInt(this.e, this.n)
}
L.prototype.doPublic = W;
Object.creat() 方法
ECMAScript第5版提出了Object.creat() 方法。
匿名函數自調用,立即執行函數IIFE
sub{print "hello world"}->()
(function (){console.log("hello world")})();
(function (a,b){ var c=a+b; console.log(c);} (3,4));
(function (a,b){ var c=a+b; console.log(c);}) (3,4);
感覺(jué)javascript也是個(gè)比perl還變態(tài)的語(yǔ)言,什么怪異的寫(xiě)法都有。
IIFE 的優(yōu)勢
總是將代碼包裹成一個(gè) IIFE(Immediately-Invoked Function Expression),用以創(chuàng )建獨立隔絕的定義域。這一舉措可防止全局命名空間被污染。
偷懶,不想額外定義函數
my $r=sub{use integer; ~time}->();
極簡(jiǎn)主義 法
在這個(gè)基礎上,配合nodejs就能從任意js文件中提取所需函數。
【perl- javascript中class的機制】相關(guān)文章:
在Java中執行JavaScript代碼04-01
JavaScript中的with關(guān)鍵字03-25
JavaScript中的三種對象04-01
抽象語(yǔ)法樹(shù)在JavaScript中的應用03-25
JavaScript中push(),join() 函數實(shí)例詳解03-31