请指教javascript的constructor属性问题?
<script language="javascript">
var a=new Array();
document.write (a.constructor+"<br>");
document.write (Array.constructor);
</script>new Array()创建一个数组对象给a,那么a就是Array对象,构造函数是function Array() { [native code] }而第二句Array对象的构造函数为什么会是function Function() { [native code] }两个都是Array对象,他们的构造函数为什么会不同呢?
第二个问题:<script language="javascript">
document.write (Array().constructor)
</script>这里显示:Array()构造函数的构造函数是他本身,那么function a(){}这个自定义的函数的构造函数也应该是本身,document.write (a().constructor);为什么输出没东西?
第三个问题:
<script language="javascript">
function a(){
}
document.write (a.constructor+"<br>");
</script>Array().constructor都可以返回本身.
为什么我写a().constructor就不能返回本身啊?
我写成a.constructor返回的是function Function() { [native code] }为什么函数名a可以作为对象啊,而不是写成a()?还有a.constructor输出后为什么构造函数是function Function() { [native code] }而不是本身?
<script language="javascript">
var a=new Array();
document.write (a.constructor+"<br>");
document.write (Array.constructor);
</script>new Array()创建一个数组对象给a,那么a就是Array对象,构造函数是function Array() { [native code] }而第二句Array对象的构造函数为什么会是function Function() { [native code] }两个都是Array对象,他们的构造函数为什么会不同呢?
第二个问题:<script language="javascript">
document.write (Array().constructor)
</script>这里显示:Array()构造函数的构造函数是他本身,那么function a(){}这个自定义的函数的构造函数也应该是本身,document.write (a().constructor);为什么输出没东西?
第三个问题:
<script language="javascript">
function a(){
}
document.write (a.constructor+"<br>");
</script>Array().constructor都可以返回本身.
为什么我写a().constructor就不能返回本身啊?
我写成a.constructor返回的是function Function() { [native code] }为什么函数名a可以作为对象啊,而不是写成a()?还有a.constructor输出后为什么构造函数是function Function() { [native code] }而不是本身?
解决方案 »
- 急急!在线等,JS中如何有效过滤内容中所有的HTML标签、CSS样式表、JS代码
- parseint全局函数学习方法的思考
- 有一个网页图片url地址,怎样用js将图片直接下载到本地不用提示保存对话框?
- 救命,无论咋改,结果都是一样,郁闷至急
- 能否用 split() 代码来判断"内容"是否存在...大家帮忙看看...
- 关于internet选项,高手看看呀
- 关于EXT的简单登录
- 关于用javascript控制ActiveX控件的问题~请帮忙~
- 有没有办法在选定图片文件后,不刷新就立刻显示在页面上?
- js编的计算器,有问题,高手帮我调试一下??送分啊
- 在asp.net 中应用如下
- javascript下拉菜单问题
JS当初就是这么设计的!!!
楼主的类和对象的概念是不是很强啊?
JS是很松散的!!!
楼主你要问下面这个是为什么,估计没有人知道。
alert(NaN==NaN);//false
new Array()创建一个数组对象给a,那么a就是Array对象,构造函数是function Array() { [native code] } 而第二句Array对象的构造函数为什么会是function Function() { [native code] } 两个都是Array对象,他们的构造函数为什么会不同呢?function a(){}
var b=new a;
alert(a.constructor) //function Function() { [native code] }
alert(b.constructor) //function a() { [native code] }
alert(a.prototype.constructor) //function a() { [native code] }
在直接访问Array的时候,它只是一个函数,constructor当然是Function了第二个问题参见你的另一贴,有回复参考:constructor 属性表示创建对象的函数。object.constructor
必需的 object是对象或函数的名称。应用于:Array Object | Boolean 对象 | Date 对象 | Function 对象 | Math 对象 | Number 对象 | Object 对象 | String 对象
document.write (Array().constructor)
</script> 这里显示:Array()构造函数的构造函数是他本身, 那么function a(){}这个自定义的函数的构造函数也应该是本身, document.write (a().constructor);为什么输出没东西? Array()应该是实例化对象,a()是执行,会报错的(具体为什么这样,应该跟它的机制有管吧)
alert((Array().constructor) 与 alert((Array.constructor)比较下就知道
Array对象是Array()函数构造的,那他为什么又是function()函数造的?为什么Array()和function 都能造出Array对象?
alert (Array.length) //Array对象
alert (Array().length) //新实例
回答二:Array().constructor这个其实跟var a=new Array(); a.constructor是一样的,因为Array()是会返回一个数组的而a().constructor是因为你这个方法里没有返回值是空的
回答三:其实跟上面的一个意思 “为什么函数名a可以作为对象啊,而不是写成a()? ”a是指向那个方法 a()就调用了
实际上就和我上面说的一样。function a(){}本身是函数,并没有进行构造,所以并没有构造函数的说。补充下上面的说法。在没有进行实例化之前,Array指向的就是其本身。就跟你没有调用程序师,这个函数并不存在,指向了默认位置一样。当然了,以上是我自己的观点。不代表真实的请跨的说