首页 > 代码库 > 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 随到。
好,那么问题来了。事件是什么呢?
你猜呀。
------------------------------------------------
今天,以新的身份,重回微软亚太研发集团大厦。黄健翔鼓动效果被微软的假给抵销得一干二净。不过,体育和传媒一样,都是好堂口。可以做事情的。
JavaScript 中的 call 是换类用的