1. 程式人生 > >JavaScript 中的 call 是換類用的

JavaScript 中的 call 是換類用的

       我不會 'use strict' 的,所以本文所述並不嚴謹。本來,現在的 JavaScript 就是你愛怎麼看它它就是什麼樣兒的。

       比如說,你怎麼看這句話:

var o = new SomeClass();

       生成一個類的對像是吧。乍一看你也不知道這是 C# 還是 JavaScript 的。那定義這個類的呢?

function SomeClass() {
  (function SomeClass () {
    console.log('SomeClass Constructor');
  })();
}

       我知道是沒人這麼玩兒 JavaScript 的。那麼問題來了,C# 你沒本事給一個對像換類是吧,但 JavaScript 行。

var obj = new SomeClass();
AnotherClass.call(obj);

       此時,obj 對像所屬的類換成了 AnotherClass,被 call 後,obj 它已經是一個 AnotherClass 類的對像了。丫 obj 會重新做人,執行一次 AnotherClass 的建構函式。

       所以,JavaScript 中的 call 是給對像換類玩兒的。

-----------------------------------------------

       根本就不是這麼回事兒。

       在 JavaScript 裡,所有的 function 都是 Function 類的對像。所以 SomeClass 是類,也是對像。所以 JavaScript 裡,類也是一種對像。

       C#,你類對像個試試?

       所以 JavaScript 天生就是個函式式的語言。多好。

-----------------------------------------------

       根本就不是這麼回事兒。

       在 C# 裡,Type 和 Class,就和 Attributes 和 Properties 一樣,反正我是懶得去扣區分。問這問題的哲學觀就不正常,你問 C# 去怎麼區分。在 JavaScript 裡是沒有搞區分的機會,typeof 算符是個廢物,而 class 也不是什麼類。

       JavaScript 你搞個 Curry 給我看看?連 pipe 你都沒有。

-----------------------------------------------

       根本就不是這麼回事兒。

       不嚴謹不是可以胡扯的藉口。

       JavaScript 之所以為 JavaScript,是因為 prototype。

       真相大白。

       所以 JavaScipt 中的 call 是用來玩兒多型的。

       這才是 call 的奧義。

       這才是真正的多型,這才是最牛屄的多型。今晚你想我是寶寶,我是寶寶,你想我是冰兒,我是冰兒。想要誰,call 一下,隨 call 隨到。

       好,那麼問題來了。事件是什麼呢?

       你猜呀。

------------------------------------------------

       今天,以新的身份,重回微軟亞太研發集團大廈。黃健翔鼓動效果被微軟的假給抵銷得一乾二淨。不過,體育和傳媒一樣,都是好堂口。可以做事情的。