1、是
2、如果循环(for)或者判断(if)的子语句只有一句,则可省略{}
3、可以使用function xxx(){function bbb(){}}
4、参见http://harrison2010.javaeye.com/blog/173446
2、如果循环(for)或者判断(if)的子语句只有一句,则可省略{}
3、可以使用function xxx(){function bbb(){}}
4、参见http://harrison2010.javaeye.com/blog/173446
1.首先楼主的代码有个个地方有问题,改成下面的.function arrayName(size){
this.length=size;
for(var X=0; X <=size;X++)
this[X]=0;
return this;
} 2.第一个问题,这个实例可以算是一个数组,但不具备数组的一些属性和方法,不是真正意义上的数组.
在用这个函数时, 可以这样写 var array_a= new arrayName(2); 这样就创建了一个新的对象,可以用array_a[0] 来取到数据,都为0,实际上 这个对象有3个元素.而不是2个. 我不赞成 1楼 的第一个问题,因为this 根本就不是arrayName. 对this 的理解要记住的一句很重要的话就是
this指向的是调用该方法的对象.
我认为this 指向的是你 new arrayName(2) 创建的这个临时对象,可以理解成 array_a
this指向的是调用该方法的对象.
不可以理解成代表这个对象吗
<script>
function arrayName(size){
/********************************************************
1、this:arr;
2、for()的{}:如果眼力/记忆力强可省略:)
3、内部函数:可以创建;
4、JS里都可以看作对象,用不着可以区分函数还是对象;看看《Javascript高级程序设计》,对你会有帮助的
*********************************************************/
this.length=size;
this.uu='呵呵';//添加对象新属性
for(var X=0; X<=size;X++){ this[X]=0; }
return this;
} var arr=[];
arr=arrayName(5);//调用
for(var i=0; i <=arr.length;i++){//输出数组看看结果。注意length
document.write(arr[i]+'<br>')
}
alert(arr.uu)//测试添加对象新属性
</script>
当你这样写:var foo = function(){...}的时候,实际上是声明了一个foo类型的构造器。它具有:foo.prototype = {}; 这个是他的原形当你把函数运行的时候,比如这样调用: foo(),那么相当于运行这个构造方法,只不过它不会在内存中产生新的实例,在这种情况下,函数中的this引用是没有意义的。当你 new foo() 的时候,实际上是复制了他的 foo.prototype,同时在这个对象内部运行它的构造方法foo.在这种时候,this指向对象自身。换句话说一个对象是一个Object,而一个Function只是作为一个对象的构造方法而存在的,在fucntion中的this永远指向函数的作用域对象。
只有做Array的原型使用的时候才有意义。
因此这里的this其实不是给自己用的。
是指的Array的对象。
用Array来理解的话就很简单了。
其实的也就不用说了。
1,这里的this 是不是可以理解成 当前对象,即arrayName
答:创建对象实例时可以这样理解。2,this[X]=0;应该是随for进行循环的,怎么没见到 "{}",是不是JS中不用{}
答:for循环默认情况下执行到第一个分号,对这句来说可有可无,两句以上则需要{},强烈建议加上{},C/C++/Java均有这个特点。
3,这事一个创建数组的例子,我想问一下,JS的对象和其他语言的类相似,但是是用function定义的,那么在这种function内,是不是就不能出现自定义函数了,即funciton xxx(){ function bbb(){} }?
答:可以出现内联自定义函数,这一点与C/C++不同,C/C++不允许有内联自定义函数
4,怎样区别JS中的函数和定义的对象,是不是看有没有对自身属性和方法的定义(例如:this.)?
答:JS中的对象是由函数生成的,JS中的函数起了两方面的作用。既作为函数来使用,又起到了其它语言中类的作用。
JS是弱类型语言,不要太刻意区别JS中的函数和对象。