学习javascript 的一点感想
动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例:
1 var obj=new object(); 2 obj.name="myname"; 3 obj.say=function(){ 4 alert("hello"); 5 } 6 obj.say();
Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,比如:
1 var s="text"; 2 alert(s); 3 s=12+5; 4 alert(s);
js的数据类型:基础数据类型(字符串,布尔值,数值性(浮点型,整型))和对象类型(对象,数组,函数)
1 print(typeof obj); 2 print(typeof array); 3 print(typeof func);
//将打印出
object
object
function
当使用str.length时,JavaScript会自动包装一个临时的String对象,内容为str的内容,然后获取该对象的length属性,最后,这个临时的对象将被释放。
由于JavaScript是弱类型的,所以JavaScript引擎需要根据上下文来“猜测”对象的类型,这就使得JavaScript的效率比编译型的语言要差一些。
引用类型,如对象,数组和函数,由于他的大小不受限制,故我们通过对其引用来访问它,引用本身就是个地址。即指向存储复杂对象的位置。
JavaScript本身是基于原型的,每个对象都有一个prototype的属性来,这个prototype本身也是一个对象,因此它本身也可以有自己的原型,这样就构成了一个链结构。
解释器传递给函数的是一个类似于数组的内部值,叫arguments,这个在函数对象生成的时候就被初始化了。比如我们传递给adPrint一个参数的情况下,其他两个参数分别为undefined.这样
我们可以扩展JavaScript解释器环境中内置的对象,这种方式的好处在于,扩展之后的对象可以适用于其后的任意场景,而不用每次都显式的声明
通过 new 操作符来作用与一个函数,实质上会发生这样的动作:
首先,创建一个空对象,然后用函数的 apply 方法,将这个空对象传入作为 apply 的第一个参数,及上下文参数。这样函数内部的 this 将会被这个空的对象所替代:
1 <strong>var triangle = new Shape( "triangle" ); 2 // 上一句相当于下面的代码 3 var triangle = {}; 4 Shape.apply(triangle, [ "triangle" ]);</strong>