动态性是指,在一个Javascript对象中,要为一个属性赋值,咱们没必要事先建立一个字段,只须要在使用的时候作赋值操做便可,以下例:数组
1 var obj=new object(); 2 obj.name="myname"; 3 obj.say=function(){ 4 alert("hello"); 5 } 6 obj.say();
Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,好比:app
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 将会被这个空的对象所替代:this
1 <strong>var triangle = new Shape( "triangle" ); 2 // 上一句至关于下面的代码 3 var triangle = {}; 4 Shape.apply(triangle, [ "triangle" ]);</strong>