javascript 里为什么函数也能new。

发布网友 发布时间:2022-04-22 02:56

我来回答

4个回答

热心网友 时间:2022-04-22 17:10

函数就是对象。
其实通常我们在javascript里定义的一个函数,都对应着一个以这个函数体为构造函数的对象。
而javascript与java不同的是,他是面向原形的面向对象语言。java是基于类的面向对象语言。
也就是说,可以通过对象来new出一个新的对象。
比如:定义 function fun(p1,p2){} 时, 实际上生成了一个Function类型(预定义类型)的对象,对象名叫fun,对象的构造函数就是这个函数的体.
于是,也可以用另一种方式定义刚才的函数(其实是对象)。
fun=new Function(‘p1,’p2’,…) ;(这种方式定义时,前面的参数都是函数的参数。只有最后一对 ‘’ 里,写入函数体)
对于这个对象,采用fun.var=“XXX”的方式,就可以为对象增加一个属性。而无须声明。

从对象org 去new一个新对象时,首先调用该org的构造函数(函数org定义时的函数体为对象 org的构造函数)。
然后将org对象的prototype属性的子属性(函数和变量)copy到新对象中。
还有构造函数里以 this.XXX= [ function (){}或“xxx”] 形式定义的XXX属性也copy到新对象中去。

当然在对象生成后,也可以另行添加属性(即函数)。
一种方式是其父对象的prototype.xxx下添加,一种是其自己 self.xxx方式添加。
在搜索的时候,先搜索自身然后在搜索父对象的prototype下的属性。即后者可以覆盖前者。

热心网友 时间:2022-04-22 18:28

你的问题看的迷糊,不太清楚想问什么。

kkk.prototype.aaa = function() { }
这个是调用函数。

b = new kkk();
这个是为声明类实例话的对象分配空间。

热心网友 时间:2022-04-22 20:02

哦! 老师说javascript摸似java语言写的。
但是他不是OOP
有觉本质的区别/.

热心网友 时间:2022-04-22 21:54

我晕呀,你怎么不问问1+1为什么等于2呢,这是语言程序设定好的,不需要知道为什么

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com