//动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例:
var
obj=new object();
obj.name="myname";
obj.say=function(){
alert("hello");
}
obj.say();
//Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,比如:
var
s="text";
alert(s);
s=12+5;
alert(s);
//js的数据类型:基础数据类型(字符串,布尔值,数值性(浮点型,整型))和对象类型(对象,数组,函数)
print(typeof obj);
print(typeof array);
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 将会被这个空的对象所替代:
<strong>var triangle = new Shape( "triangle" );
// 上一句相当于下面的代码
var
triangle = {};
Shape.apply(triangle, [ "triangle"
]);</strong>