易截截图软件、单文件、免安装、纯绿色、仅160KB

javascript框架之继承机制3

继续上一部分,现在我们的实的构造器initialize很完美了,甚至连类式super这样语法糖都不用了,就自动实例了父类。我们转而看一看其属性与方法的继承。许多类库都是一个for...in循环再加一些判定实现原型属性拷贝,或根据这些判定把某些属性揪出来加工一下再放进去。又如,我们要对Array的模板进行扩展,做成一个新类Array2,直接继承后,在有些浏览器中Array2可能有forEach方法,可能没有,如果没有,我们才添加自己实现的forEach方法。因此条件过滤非常重要的。在mootools中,生成类都带有一些类方法(alias与implement),以供更进一步的加工。
var copy = function(a,b,c){
var l = arguments.length;
if(a && b && l == 2){
for(var p in b)
a[p] = b[p];
}else if(a && b && l == 3 ){
a[b] = c;
}
return a;
};
上面的方法名副其实,就是用于单纯的复制。
var override = function(a,b,filter,scope){
var i, scope = scope || window;
for(i in b) {
if(filter.call(i,a,b))
a[i] = b[i];
}
};
override 为有选择地复制,如果我们不想覆盖原生函数,只需要这样:
override(Array,{/**/},function(p,a,b){
return !(p in a)
})
有了以上方法,我们就可以设置更为复杂的语法糖,如实例属性的getter与setter,它们在java早已用annotation搞定了,在ruby中它们的设置也非常简单,我们没有道理放弃如此诱人的东西。不过,在javascript中我们无法利用注释来实现,因为可恨的火狐在编译时把注释全部去掉。ruby那种实现,相当于让人设计另一套语法。因此,我们还是交由类工厂实现,把它们全部变成原型方法。过程如下,首先取得我们定义的构造方法,然后取得其参数,再取得父类构造器的参数,然后转化为两个数组,如果子类参数数组的长度大于父类的,说明它定义了新的属性,我们把这些新属性提出来,然后把它们首字母大写前面加上set与get,对应的函数用eval生成即可。
//获取函数的参数,以字符串数组形式返回
var argumentNames = function(fn) {
var names = fn.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
.replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
.replace(/\s+/g, '').split(',');


相关文档:

Javascript操作下拉框的常用方法

 function AddDropDownList(id,fatherCtl)
{
    if(!document.getElementById(id))
    {
        var ddl = document.createElement('select');
        ddl.s ......

javascript中的字符串嵌套

 在JavaScript中字符串是用引号“" "”、“' '”包起来的零个至多个字符。用哪个引号开始就用哪个结束,而且单双引号可嵌套使用,不过JavaScript 中引号的嵌套只能有一层。如果想再多嵌一些,需要用转义字符:
转义字符 由于一些字符在屏幕上不能显示,或者 JavaScript 语法上已经有了特殊用途, ......

JavaScript对象模型

JavaScript对象模型-执行模型
http://www.cnblogs.com/RicCC/archive/2008/02/15/JavaScript-Object-Model-Execution-Model.html
数据类型
基本数据类型
基本数据类型是JS语言最底层的实现。
简单数值类型: 有Undefined, Null, Boolean, Number和String。注意,描述中的英文单词在这里仅指数据类型的名称,并不特指JS ......

张孝祥JavaScript视频教程

本文来自:http://forum.sysmu.com/thread-394-1-1.html
 网通线路,部分文件下载比较慢,望谅解! 7 P+ q$ K. }0 ^$ l1 b
第一部分: html语言基础
ftp://edu:edu@ftp.hyperedu.cn:2003/视频教学1区/JavaScript张孝祥/01-01.rmvb 
fftp://edu:edu@ftp.hyperedu.cn:2003/视频教学1区/JavaScript张孝祥/01-02.rm ......

用JavaScript获取客户端MAC地址(转)

 <HTML>  
<HEAD><TITLE>WMI Scripting HTML</TITLE>  
    <META http-equiv=Content-Type content="text/html; charset=gb2312">  
    <SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, p ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号