core js
文章平均质量分 56
魔豆爸
擅长Web开发前端技术,具有多种浏览器下开发经验。精通 JavaScriptAJAX编程熟练使用主流JS库。手写JS能力强,运用无干扰的JS思想进行开发。熟练使用CSS及DHTML,W3C标准的推广和贯彻者。熟悉Java语言,MVC设计模式,StrutsSpring架构
展开
-
Javascript语言的模块化
Javascript语言的模块化一、 javascript模块化的层次:语法作用域 javascript的语法作用域有四种1、 表达式2、 语句和批语句If()…else…For()…Do...while()While()…With()…Switch(){…}//必须加大括号Try{} //必须加大括号Catch(){…}//原创 2008-05-26 11:52:00 · 1295 阅读 · 0 评论 -
js閉包(一)
js閉包(一)js閉包(一)有个网友问了个问题,如下的html,为什么每次输出都是5 html >head>meta http-equiv="Content-Type" content="text/html; charset=utf-8" />title>闭包演示title>style type="text/css">style>script typ原创 2008-09-11 15:49:00 · 1894 阅读 · 0 评论 -
js對象的比較
項目中需要比較兩個對象是否相等,給Object對象開展了(別緊張,別說我把它污染了),一個實現而已,象java一樣可以只給自己想要的類重寫equals方法。 Object.prototype.equals = function(obj){ if(this == obj) return true; if(typeof(obj)=="undefin原创 2008-11-24 14:19:00 · 526 阅读 · 0 评论 -
js匿名函数的调用方式
js中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。1、执行后得到返回值的函数调用//方式1,调用函数,得到返回值。强制运算符使函数调用执行(function(x,y){ alert(x+y); return x+y;}(3,4)原创 2008-12-03 09:11:00 · 4293 阅读 · 1 评论 -
js变量声明时命名与变量作为对象属性时命名区别
这个标题实在拗口,javascript命名变量所遵循的规则1、第一个字符必须是字母、汉字字符、下划线(_)或美元符号($)2、剩下的可以是下划线、汉字字符、美元符号和任何字母、数字//以下下声明变量是正确的var p,$p,_p;var 长,宽;//以下是错误的var .p;//只能是字母、数字、下划线或美元符号var -p;//只能是字母、数字、下划线或美元符号var p*;原创 2008-12-03 09:18:00 · 3276 阅读 · 1 评论 -
javascript变量作用域
变量的作用域指的是变量的可见性,而生命周期则(存活期)则是从另一个角度考察变量。js中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量。(“函数外的称为全局变量”是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量,当然忽略var声明变量是不赞成的)。 test1.html原创 2010-05-07 10:02:00 · 513 阅读 · 0 评论 -
返回两个数组中非相同的元素
csdn上又有个网友提这样的问题,看来这个问题很多时候都会碰到。如下var a=[1,2,3,4] var b=[1,2] 如何比较才能得到数组c=[3,4] 基本的算法就是挨个比较两个数组的元素,把不同的跳出来单独放到一个数组里,最后返回该数组。 其实数组元素如果是基本类型(Number,String,Boolean)的很好比较,但原创 2010-05-10 11:49:00 · 458 阅读 · 0 评论 -
利用js动态类型特性对数组排序
首先,看看js和java中关系运算符的区别。这里拿大于号做示例(>)。 a、java中的大于号不能用于两个字符串的比较 String s1 = "11", s2 = "12";System.out.println(s1>s2);//编译报错,不能通过 b、js中的则可以,比较的字符串中各个字符ASCII大小var s1="11",s2="12";conso原创 2010-05-11 09:07:00 · 496 阅读 · 0 评论 -
用递归实现十进制数转换N进制
最近回顾了下数据结构及算法,以下是用java和js实现的十进制数转换N进制。 java实现/** * baseString 递归调用 * @param num 十进制数 * @param base 要转换成的进制数*/public static String baseString(int num,int base) { String str = ""原创 2010-05-12 08:56:00 · 861 阅读 · 0 评论 -
js克隆一个数组
一道js面试题,职位是javascript工程师 面试官问我如何克隆一个数组,当时想了下js的Object没有clone方法,java的Object有。 那怎么得到一个新数组呢? 我当时回答:用一个loop将源数组元素依次push到新数组中。这是最简单的方法,但显然不是面试官想要的答案。 最后告知我:利用Array的slice方法。该方法的介绍就不贴在这里了,网上一原创 2010-05-12 08:49:00 · 886 阅读 · 0 评论 -
for in的缺陷
for in 语句用来列举对象的属性(成员),如下 var obj = { name:"jack", getName:function(){return this.name} };//输出name,getName for(var atr in obj) { alert(atr);} 不知注意了吗,没有输出obj的toString,valueOf原创 2010-05-13 15:37:00 · 757 阅读 · 0 评论 -
javascript写类方式之一
从这篇起,会由浅到深的分析js OO之写类方式,大概会有5-8篇。后面陆续会分析流行库(框架)的写类方式。为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法。 EMCA262规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。 1、构造函数方式 /** * Person类:定义一个原创 2010-05-14 15:27:00 · 431 阅读 · 0 评论 -
js奇淫技巧之遍历数组
正常的for循环就不提了,直接进入正题。如下: //示例1for(var i=0,a;a=["jack","tom","lily","andy"][i++];){ console.log(a);}//示例2var ary = ["jack","tom","lily","andy"];for(var i=0,a;a=ary[i++];){ console.log(原创 2010-05-13 15:44:00 · 774 阅读 · 0 评论 -
javascript写类方式之四
通过前面几篇得知javascript写类无非基于构造函数和原型。既然这样,我们写个工具函数来写类。 /** * $class 写类工具函数之一 * @param {Object} constructor * @param {Object} prototype */function $class(constructor,prototype) { var c =原创 2010-05-17 08:59:00 · 360 阅读 · 0 评论 -
javascript写类方式之二
2、原型方式 /** * Person类:定义一个人,有个属性name,和一个getName方法 */function Person(){}Person.prototype.name = "jack";Person.prototype.getName = function() { return this.name;} 把类的属性(字段),方法原创 2010-05-17 08:51:00 · 324 阅读 · 0 评论 -
javascript写类方式之三
取前面两种的优点:a、用构造函数来定义类属性(字段)b、用原型方式来定义类的方法。就有了第三种方式。这种方式貌似采用的人较多。 3、综合构造函数/原型 /** * Person类:定义一个人,有个属性name,和一个getName方法 * @param {String} name */function Person(name) { this.n原创 2010-05-17 08:54:00 · 342 阅读 · 0 评论 -
javascript写类方式之五
5、用 构造函数+原型 定义一个类;同一构造函数可以定义出多个类型 /** * $define 写类工具函数之二 * @param {Object} constructor * @param {Object} prototype */function $define(constructor,prototype) {原创 2010-05-20 07:57:00 · 396 阅读 · 0 评论 -
javascript写类方式之八
8、Ext.js的写类方式 这里用的是Ext core3.0,Ext中用Ext.extend来定义一个类(当然它更多用来扩展一个类),Ext整个框架各种控件如Panel,MessageBox等都是用Ext.extend方法来扩展。这里仅仅用它来定义一个最简单的类。 看Ext.extend的代码可得知,它仍然是用构造函数和原型来组装一个类。 这里只需传两个参数即可,第一个原创 2010-05-20 08:00:00 · 368 阅读 · 0 评论 -
javascript写类方式之九
9、YUI的写类方式 这里引入的是YUI 2.7.0版,只需引入yahoo.js。YUI引入了命名空间,类似于java的包。以下yahoo的工具函数包 YAHOO.namespace YAHOO.lang YAHOO.lang.hasOwnProperty YAHOO.lang.extend YAHOO.lang.augment Y原创 2010-05-20 08:01:00 · 423 阅读 · 0 评论 -
javascript写类方式之十
10、mootools.js的写类方式 mootools.js的最新版本是1.2.3,这里使用的是1.2.0。mootool被设计成非常紧凑的,模块化的,面向对象的的js库。mootool中写类用Class类。Class类由Native类new出来的: /* *Script: Class.js*/var Class = new Native({ name: C原创 2010-05-20 08:05:00 · 379 阅读 · 0 评论 -
javascript写类方式之七
7、dojo.js的写类方式 dojo最新是1.3.1了,记得07年时还是0.4。文档也渐渐多了起来,用dojo的也慢慢多了。dojo还发布了core版,压缩后只有27kb。dojo中用dojo.declare方法来定义一个类。dojo.declare的源码就不贴在这里了。dojo.declare有三个参数,参数1:类名className参数2:继承的类superc原创 2010-05-20 07:59:00 · 380 阅读 · 0 评论 -
javascript写类方式之六
这篇开始会分析流行的js库之写类方式。各种库的写类方式虽然千奇百怪,但仍然逃离不了本质---用构造函数和原型来组装类。 6、Prototype.js的写类方式 //prototype.js中的代码var Class = { create: function() { return function() { this.initialize.ap原创 2010-05-20 07:59:00 · 316 阅读 · 0 评论 -
具名函数的四种调用方式(1)
1、()小括号运算符 平时最常用的就是()运算符来调用一个函数 //无参函数fun1function fun1() { alert(我被调用了);}fun1()//有参函数fun2function fun2(param) { alert(param);}fun2(我被调用了) ECMAScript3后加入给Functio原创 2010-05-24 09:46:00 · 539 阅读 · 0 评论 -
具名函数的四种调用方式(2)
以函数中有无this来讨论。没有this时返回一个空的对象{},有this时返回一个非空对象。 定义一个没有this的函数 //返回值是基本类型function fun() { return "jack";}var c = new fun();for (var atr in c) { alert(atr);} alert(c);//[object O原创 2010-05-24 09:48:00 · 364 阅读 · 0 评论 -
具名函数的四种调用方式(3)
这里把函数名首字母大写了,让它符合java类命名规范。 /** * 定义一个函数Car */function Car(color,doors) { var car = {}; car.color = color; car.doors = doors; car.msg = function(){ alert("This is a " + this.c原创 2010-05-24 09:49:00 · 435 阅读 · 0 评论 -
JScript与SpiderMonkey对继承成员可见性的差异
Object是所有javascript对象的超类,其它对象都继承了Object的属性和方法。 Object默认有一个属性constructor,6个方法hasOwnProperty、isPrototypeOf、propertyIsEnumerable、toLocalString、toString和valueOf。(ECMAScript3.1新增getPrototypeOf方法,fi原创 2010-05-29 11:05:00 · 424 阅读 · 0 评论 -
javascript继承方式之一
面向对象的语言多数都支持继承,继承最重要的优点就是代码复用,从而构建大型软件系统。如果一个类能够重用另一个类的属性和或方法,就称之为继承。从这个角度来看看js的继承方式。js中继承方式与写类方式息息相关。不同的写类方式造成不同的继承方式。各种流行js库继承方式也各不相同。从最简单的复用开始。 1、构造函数写类,通过方法调用复制父类属性给子类实现继承 这里父类,子类都原创 2010-05-29 11:07:00 · 328 阅读 · 0 评论 -
javascript继承方式之三
3、组合构造函数/原型方式写类,采用前面种方式继承 这种方式父类,子类的属性都挂在构造函数里,方法都挂在原型上。 /** * 父类Polygon:多边形 */function Polygon(sides) { this.sides = sides;}Polygon.prototype.setSides = function(s) {this.sides=原创 2010-05-29 11:10:00 · 349 阅读 · 0 评论 -
javascript继承方式之二
2、原型方式写类,原型方式继承 core js自身的对象系统就是采用原型方式(prototype based)继承的。或者说corejs没有采用常见的类继承(classbased)系统,而是使用原型继承来实现自己的对象系统。工作中我们也可以用原型方式来实现继承,代码复用以构建自己的功能模块。 /** * 父类Polygon:多边形 * */functi原创 2010-05-29 11:09:00 · 335 阅读 · 0 评论 -
javascript继承之工具函数一
这篇开始写几个工具函数实现类的扩展。每个工具函数都是针对特定的写类方式(习惯)。这篇按照构造函数方式写类:属性(字段)和方法都挂在this上。先写个类(作为父类),有一个属性nationality(国籍)和相应的get,set方法。// 父类Personfunction Person(nationality) { this.nationality = nationality; this.setNationality = function(n) {this.nationality=n;};原创 2010-09-01 13:42:00 · 421 阅读 · 0 评论 -
javascript继承之工具函数二
<br />按原型方式写类,即属性和方法都挂在原型上。<br />/** * 父类Person */function Person(){}Person.prototype.nationality = 'China';Person.prototype.getNationality = function() {return this.nationality;}Person.prototype.setNationality = function(n) { this.nationali原创 2010-09-01 13:49:00 · 335 阅读 · 0 评论 -
javascript继承工具函数之三
<br /><br />按构造函数/原型混合 方式写类,即属性挂在this上,方法挂在prototype上。<br /> <br />工具函数extend如下,实现思路见注释<br />/** * @param {Function} subCls 子类 * @param {Function} superCls 父类 */function extend(subCls,superCls) { //暂存子类原型 var sbp = subCls.prototype; //重写原创 2010-09-01 13:51:00 · 348 阅读 · 0 评论 -
判断元素是否为HTMLElement元素
<br />我们经常使用nodeType==1判断元素是否是一个HMTLElement元素。页面上的元素都是节点(Node),有元素节点(Element Node)、属性节点(Attribute Node)、文本节点(Text Node)等。w3c nodeType的定义如下:<br /> <br />const unsigned short ELEMENT_NODE = 1;<br /> const unsigned short ATTRIBUTE_NODE原创 2010-11-26 18:05:00 · 1261 阅读 · 0 评论 -
兼容鼠标滚轮事件
浏览地图时,使用鼠标滚轮来放大和缩小。即用到了滚轮事件。 这个事件在标准下和IE下是有区别的。firefox是按标准实现的,事件名为"DOMMouseScroll",IE下采用的则是"mousewheel"。 当然一行代码就解决了兼容问题 var mousewheel = document.all?"mousewheel":"DOMMouseScroll"; ...2009-04-02 14:09:05 · 117 阅读 · 0 评论 -
JavaScript闭包演示
有个网友问了个问题,如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5。 <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>闭包演示</title&2008-10-07 21:34:08 · 134 阅读 · 0 评论 -
js對象的比較
項目中需要比較兩個對象是否相等,給Object對象開展了(別緊張,別說我把它污染了),一個實現而已,象java一樣可以只給自己想要的類重寫equals方法。 Object.prototype.equals = function(obj){ if(this == obj) return true; if(typeof(obj)=="undefined"||obj==null...2008-11-18 17:33:33 · 92 阅读 · 0 评论 -
Javascrpt的類型檢測
眾所周知,js是弱類型語言。定義任何類型的變量都用var關鍵字,如果只是聲明變量,卻沒有給其賦值。那么誰也不知道這個變量是啥類型的。 如下: var abc;//定義一個變量abc,卻沒有給其賦值 Java中卻不同,定義一個變量后,馬上就知道了變量的類型和變量所占的內存大小。看似沒給abc賦值,實際上java會給其一個默認值(這裡是0),當然ab...2008-11-20 12:56:49 · 99 阅读 · 0 评论 -
Javascript中各种trim的实现
這是lgzx公司的一道面試題,要求給js的String添加一個方法,去除字符串兩邊的空白字符(包括空格、製錶符、換頁符等) String.prototype.trim = function() { //return this.replace(/[(^\s+)(\s+$)]/g,"");//會把字符串中間的空白符也去掉 //return this.replace(/^\s...2008-11-20 15:31:16 · 110 阅读 · 0 评论 -
script跨域访问与XMLHttpRequest
script不受Web浏览器跨域安全限制的束缚,即能实现跨域访问。这是它的最大优点。 另外一点需要注意的是不同浏览器对script的触发事件不同,即回调函数要写在这些函数之中,且只支持异步调用 IE下:加载完成后触发"onreadystatechange"事件firefox下:加载完成后触发"onload"事件 以下是同xmlHttpRequest的比较 ...2009-05-11 17:26:14 · 156 阅读 · 0 评论 -
索引数组、关联数组和静态数组、动态数组
数组分类:1、从数组的下标分为索引数组、关联数组 /* 索引数组,即通常情况下所说的数组 */var ary1 = [1,3,5,8];//按索引去取数组元素,从0开始(当然某些语言实现从1开始)//索引实际上就是序数,一个整型数字alert(ary1[0]);alert(ary1[1]);alert(ary1[2]);alert(ary1[3...2008-11-24 15:59:13 · 134 阅读 · 0 评论