您好,欢迎访问一九零五行业门户网

JavaScript快速充电

netscape发明的,思想来自函数语言schema和self,有点接近python.
特征:弱类型,动态解析,函数是对象,对象基于prototype
前三个特征容易理解,最后一个要重点解释。
最基本的最佳实践:在大型程序中使用fuction和对象!不要流水账式编程。
the easiest way to create an object is:
var myobject = new object();
javascript对象本质上是关联数组。
小提示:注意将函数赋给变量时使用functionname()与functionname的区别,前者是将函数的结果付给变量,而后者将函数引用付给变量。
可以使用json创建和修改javascript对象,javascript也可以修改json创建的对象。
构造函数/类/prototype属性
javascript也有对象和类的概念,但是没有内建继承的概念。事实上,每个javascript对象都是相同基类的实例。这个基类有能力在运行时将成员字段和函数与自己绑在一起。
安全的替代品:prototype属性
prototype是javascript对象的一个属性,在oo语言中没有对等物。函数和属性可以与构造函数的prototype关联起来。然后prototype和new关键字协同工作,当使用new调用函数时,函数prototype的所有属性和方法会附加到结果对象上。
java代码 
function myobject(name, size){  
this.name = name;  
this.size = size;  
}
myobject.prototype.tellsize = function(){   
alert(size of +this.name+ is +this.size);  
}
var myobj = new myobject(tiddles, 7.5 meters);  
myobj.tellsize();
function myobject(name, size){
this.name = name;
this.size = size;
}
myobject.prototype.tellsize = function(){
alert(size of +this.name+ is +this.size);
}
var myobj = new myobject(tiddles, 7.5 meters);
myobj.tellsize();
注意,在声明构造函数之后,我们才能引用prototype,对象之恩那个继承那些在调用构造函数之前就已经附加到prototype上的东西。prototype可以在两次调用构造函数之间进行修改,并且可以附加任何东西,不仅仅是函数,到prototype上。
使用prototype来为javascript对象定义类似于类的行为,是一条安全和可靠的路径。
扩展内建类
在web浏览器中,一些核心类是可以通过prototype机制进行扩展的。
java代码 
array.prototype.indexof = function(obj) {  
var result = -1;  
for (var i=0; i< this.length; i++) {  
if (this[i]==obj){  
result=i;  
break;  
}  
}  
}
array.prototype.indexof = function(obj) {
var result = -1;
for (var i=0; i< this.length; i++) {
if (this[i]==obj){
result=i;
break;
}
}
}
prototype的继承
javascript没有本地实现,不过有一些灵巧的变通方法。
javascript对象的反射
用于发现对象的类型
事件处理和函数上下文
在编程方式声明dom元素的事件处理函数时,即使没有为函数分配参数,当点击dom元素时,event对象作为了函数调用的参数,元素本身作为上下文对象。
如果希望事件处理函数引用它附加到的模型对象,有两种方法:
1.使用名称引用模型
2.向dom节点附加模型
其它类似信息

推荐信息