javascript 里为什么函数也能new。

为什么javascript里定义的函数,比如 function kkk() {... }

能这样, kkk.prototype.aaa = function() { }

还能这样, b = new kkk();

函数怎么还能new? 请讲解一下,谢谢。
对不起,我javascript刚出道,对语法不太了解。
程序能运行,我当然知道没问题。
希望谁能给介绍一下这语法。不要用废话来回答。
给个链接也行啊。我在百度搜了一下没找到好的教程。

函数就是对象。
其实通常我们在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下的属性。即后者可以覆盖前者。
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-12
你的问题看的迷糊,不太清楚想问什么。

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

b = new kkk();
这个是为声明类实例话的对象分配空间。
第2个回答  2007-04-13
哦! 老师说javascript摸似java语言写的。
但是他不是OOP
有觉本质的区别/.
第3个回答  2007-04-12
我晕呀,你怎么不问问1+1为什么等于2呢,这是语言程序设定好的,不需要知道为什么

javascript 里为什么函数也能new。
函数就是对象。其实通常我们在javascript里定义的一个函数,都对应着一个以这个函数体为构造函数的对象。而javascript与java不同的是,他是面向原形的面向对象语言。java是基于类的面向对象语言。也就是说,可以通过对象来new出一个新的对象。比如:定义 function fun(p1,p2){} 时, 实际上生成了一个F...

JS中new()有什么作用
以这种方式调用构造函数实际上会经历以下 4个步骤:(1) 创建一个新对象;(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;(3) 执行构造函数中的代码(为这个新对象添加属性) ;(4) 返回新对象。 new 操作符在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成...

javascript的new
一、new关键字的作用 在JavaScript中,`new`是一个特殊的关键字,它用于激活对象的构造函数,从而创建该对象的一个新实例。当我们使用`new`关键字时,实际上是在内存中创建一个新的对象,然后将其链接到相应的构造函数。二、如何创建对象实例 使用`new`关键字创建对象实例的基本语法是:`new 构造函数...

JavaScript中new操作符的原理与实现详解
从这段代码可以看出,使用new操作符调用构造函数时,会生成一个具有构造函数相同属性的新对象,这让人感到困惑,因为Vehicle是函数而非对象。new操作符做了以下几件事情:创建一个新的空对象将构造函数的原型赋值给新对象的原型将新对象绑定到构造函数的上下文this上调用构造函数,并传入参数如果构造函数返回...

一起搞清楚JS中的new到底做了什么,并模拟实现一个new
模拟new实现:在JavaScript中,"new"执行的过程可以概括为以下几个步骤:1. 创建一个新的空对象,作为新生成的对象实例。2. 将新创建的对象的__proto__指向构造函数的prototype,这样实例可以继承构造函数的原型链。3. 将新创建的对象赋值给构造函数内部的"this"关键字,使其成为构造函数的上下文。4. ...

深入理解JavaScript——new 做了什么
其次,new会为新创建的对象设置this指向,使其在构造函数内部可以引用这个新对象,方便属性的添加和初始化。在ES5之前,如果没有Object.create的API,开发者需借助如new Object()的方式间接实现,但new提供了更为直观的操作方式。在JavaScript高级程序设计第四版中,new被描述为一系列的操作:创建新对象、...

javascript中的new有什么用
new是用来实例化一个对象的,比如:d=new Date(),new Date()是用来实例化一个事件对象,然后赋值给变量d js中有四种调用模式---方法、函数、构造器以及apply调用模式 构造器调用模式 一句话就是用new来调用的 new的时候this就绑定到新对象上了 比较好理解 (1)new运算符后面必须跟着一个函数...

javascript什么时候使用new呢
在这里new没意义,new在js里面是重新执行一遍的 array已经生成,再new无非就是重新再生成一遍,没意义

Javascript中调用一个函数,使用new或者直接调用有什么区别
new的调用有两种方式:静态方法或普通的方法。如果是调用静态方法,和直接调用没区别;如果调用的是普通方法,则方法内可以使用非静态变量或者非静态方法。而通过直接调用是静态方法,该方法必须是静态方法。

JavaScript中的“ new”关键字是什么?
new ConstructorFunction(arg1, arg2)完成此操作后,如果请求新对象的未定义属性,则脚本将改为检查对象的 [[prototype]]对象的属性。这就是您可以获得类似于JavaScript中传统类继承的方式的方法。关于这一点,最困难的部分是点号2。每个对象(包括函数)都具有称为 [[prototype]]的 内部属性。它可以 只...

相似回答