背景介绍:RT是一个外包公司,ZWZX是项目承接公司,YD是甲方。

RT 公司每天下班的时候都会接到ZWZX负责人的电话,询问一天的工作情况,然后布置任务要求晚上加班做完,RT公司的员工很无奈也很气愤因为每天都要加班, 员工们就问项目经理:“为什么天天加班赶需求,今天才提一个需求,明天就要上线,还让不让人活了?” 项目经理无奈的说:“我有什么办法啊?这是人家ZWZX负责人说的啊,对方逼得紧。”

多次以后项目经理也忍不住了,就问ZWZX的负责人怎么天天这样啊,ZWZX的负责人就说了:”明天就要向YD的负责人展示这个页面,我也没有办法啊?YD那边老总就是这么要求的,我怎么办,我也不想这样啊?”

然后RT的项目经理实在受不了了就辞职了,新上任的项目经理又会走他的老路,因为从开始我们就被培养“满足客户的需求是最重要的”。RT的员工也就这样一直抱怨着,一直忍受着。天天在心里咒骂YD的老总真是没有人性,不拿人当人看啊!

人换了一批又一批,加班也就慢慢的变成了应该的,你不加班说明你不敬业,不合格。

故事二:

IE6一直存活着,所有的前端开发人员都痛恨它,都不想兼容它,可是产品经理看到IE6的市场占有率还是这么高,就会要求前端开发人员必须兼容IE6。

矛 盾又来了,就像故事一一样,前端开发人员天天抱怨,产品经理也天天抱怨,但是面对IE6的市场份额,产品经理会劝开发人员说:“我有什么办法啊?IE6的 市场份额就是这么高,不兼容怎么办啊?我也不想啊!” 开发人员也就这样忍受着,然后不断地抱怨用IE6的用户低端,没文化,怎么还用IE6啊!天天兼容IE6就够烦的了,还怎么创新啊!

这两个故事里出现的问题到底是谁的错误引起的?

故事一的罪魁祸首是YD的老总吗?

故事二的罪魁祸首是那些还用着IE6的用户吗?

从这两个嫌疑最大的罪魁祸首眼中看一下这两个故事:

故事一:

我是YD的老总,我要建立一个网站,找到了ZWZX公司,签订了合同,我提需求他们实现。

我 不懂制作网站,可是我才思敏捷,创意无限,不停的会有好点子从我的脑海里蹦出来,每当有一个好点子蹦出来后,我都会给ZWZX公司的负责人讲清楚我的想 法,让他实现,开始我不知道做一个页面需要多长时间。第一次我试探性的说了一周必须把我这个点子做出来,ZWZX公司负责人很痛快的答应了,一周后我果然 看到了这个功能。

可是会不会我给他们的时间太长了?对!肯定是,要不也不会答应的这么痛快。这些人啊!天天就是想拖时间,好多骗我点钱。

点子又来了,这次我要求5天做出来,这个点子和上个点子类似,我倒要看看5天能不能做出来~ ZWZX公司负责人一副痛苦的表情,我会不会逼的太紧了,5天是不是真的做不出来?到时候看看吧,如果5天没做出来估计是我给的时间太少了。

5天过去了ZWZX公司的负责人很高兴的拿出了我要的功能实现,哎,看来开始真的骗了我两天。就是不知道5天会不会还是多了啊?下次给3天~

又拿出来了,虽然他装的好像时间太紧似的,可别以为我不知道,你第一个功能最多3天就做出来了,我还给了你7天的项目经费,你们多赚了我多少啊!!!! 真是没良心。 下次1天!!!

啊啊啊啊啊啊啊啊!!! 1天就出来了,这些人。。。。。 有没有良心,原来做这个这么简单,以后就给1天,不 ! 一天N个功能。

故事二:

我 买了个电脑,没什么别的用途,就是打开电脑上上网,上上QQ和儿子聊聊天,QQ是儿子给我装上的,这样我就可以和他视频了。有一次QQ提醒我说我的QQ版 本太低了,不能视频了,我打电话问儿子,儿子说按提示升级一下QQ就行了,呵呵,我按QQ的提示,儿子的指示一步一步的升级QQ成功了,看来电脑也不难 啊!

到这里您认为开始的两个故事的罪魁祸首是谁啊?

我 们一直以加班,甚至通宵去满足客户不合理的要求,只因为他是客户。只因为人人都认为满足客户的要求是我们最大的 价值,可是不合理的要求不能去拒绝吗?套用刘欢说的一句话“我们是不是活的应该有些尊严”,一味的迎合客户,只会让我们自己越来越痛苦,反而得不到用户的 尊重,肯定。

我 一直有个疑惑,很多人说网站不支持IE6,而选择让用户去升级IE,这样的用户体验不好!如果按照按照这个逻辑,是不是我们都应该是Web应用,而且都应 该是IE6下的Web应用呢?为什么微软还要出WIN8,一直XP不是挺好的吗?让用户升级系统,用户体验多么不好啊?QQ,360,搜狗输入法,等等客 户端软件用户体验不都不好吗? 都还要用户下载。

实 在搞不懂为什么我们做个东西非要去支持IE6呢?检测到用户是IE6,给个提示,给个升级链接不就行了? 这样做用户体验是有多么不好吗? 你天天去支持IE6,还要天天磨叽用户使用IE6,你不觉的很矛盾吗?再说我一个普通用户,你如果不提醒,我怎么知道要升级IE6啊?

对于遭遇了故事一,故事二的人只能送上一句话“哀其不幸,怒其不争!”

posted @ 2012-04-20 13:12 jxin 阅读(23) 评论(0) 编辑

一直以为自己对正则还是有些了解的,没想到被果果一个简单的题目给难到了。。

原题是:替换掉一个未知字符串里重复的单字符。

答案是利用反向引用,看来学到的东西也不一定就是自己的,懂得运用才是真理呀。

var s = 'asdhbbadshashdbajbhs';
s
= s.replace(/(.)(?=.*\1)/g,'');
console.log(s)
posted @ 2011-04-15 02:37 jxin 阅读(73) 评论(0) 编辑

该扩展方法目的为删除数组中的重复项,并返回一个包含所有重复条目的新数组;

我的方法
Array.prototype.del=function(){
var b={},c,i=0,l=this.length,j;
for(;i<l;i++){
c
=this.shift();
c
in b ? b[c]++ : b[c]=0;
}
for(j in b){
if(b[j]>0)this.push(+j||j);
}
return this;
}
var a=[1,2,2,3,3,3,'a','b','b'];
alert(a.del());

 

果果的去重方法
Array.prototype.del=function(){
return (function (i, n, j, u, o){
for (; i < j; i++) {
o
= this[i];
o
in u ? 0 : (u[this[n++] = o] = 1)
}
this.length = n;
return this
}).call(
this, 0, 0, this.length, {})
}
var a=[1,2,2,3,3,3,'a','b','b'];
alert(a.del())
posted @ 2010-12-04 14:34 jxin 阅读(108) 评论(3) 编辑
代码
<ul>
<li>1111</li>
<li>2222</li>
<li>3333</li>
</ul>
<script>
var a=document.getElementsByTagName('li');
for(var i=0,l=a.length;i<l;i++){
a[i].onclick
=function(){
alert(i)
}
}
</script>

一个最经典的例子,上面的代码无论点击哪个结果都为最后的值,因为click事件接收的函数形成了一个闭包,闭包里的i只是对外部函数中变量i的引用,当fn执行完毕时变量i是循环得出的最后的值,闭包内的变量i也就是这个值了,所以不会依次弹出1,2.3.

至于解决的方法:

1)为遍历的每个元素添加自定义属性用来保存当前的索引值.

function fn() {
var a = document.getElementsByTagName("li ");
for( var i=0; i<a.length; i++ ) {
a[i].i
= i;
a[i].onclick
= function() {
alert(
this.i);
}
}
}

 

2)将当前索引值保存到匿名函数自身.

function fn() {
var a = document.getElementsByTagName("li");
for( var i=0; i<a.length; i++ ) {
(a[i].onclick
= function() {
alert(arguments.callee.i);
}).i
= i;
}
}

 

3)加一层闭包,将当前索引值以函数参数形式传递到内部函数.

function fn() {
var a = document.getElementsByTagName("li");
for( var i=0; i<a.length; i++ ) {
(
function(arg){
a[i].onclick
= function() {
alert(arg);
};
})(i);
//调用时参数
}
}

 

4)加一层闭包,将当前索引值以变量形式传递到内不函数.

代码
function fn() {
var a= document.getElementsByTagName("li");
for( var i=0; i<a.length; i++ ) {
(
function () {
var index = i;//调用时局部变量
a[i].onclick = function() {
alert(index);
}
})();
}
}

 

5)加一层闭包,返回一个函数作为响应事件.

代码
function fn() {
var a = document.getElementsByTagName("li");
for( var i=0; i<a.length; i++ ) {
a[i].onclick
= function(arg) {
return function() {//返回一个函数
alert(arg);
}
}(i);
}
}

 

6)利用Function对象,需要注意的是Function构造函数是在脚本运行时创建函数并将参数用作新函数的参数,所以相对前几种方法执行效率较低.

function fn() {
var a = document.getElementsByTagName("li");
for( var i=0; i<a.length; i++ ) {
a[i].onclick
= Function('alert('+i+')')
}
}

 

7)利用Function对象实例来产生闭包.

function fn() {
var a= document.getElementsByTagName("li");
for( var i=0; i<a.length; i++ ) {
a[i].onclick
= new Function('alert(' +i+' )' );//new一次就产生一个函数实例
}
}
posted @ 2010-11-15 10:51 jxin 阅读(201) 评论(1) 编辑

1.比较古老的方法:

1 function strToJson(str){
2 var json = eval('(' + str + ')');
3 return json;
4 }

2.比较常用的方法:

1 function strToJson(str){
2 return (new Function("return " + str))();
3 }

3.IE67不支持的json对象方法:

1 function strToJson(str){
2 return JSON.parse(str);
3 }

4.jQuery提供的方法:

1 parseJSON: function( data ) {
2 if ( typeof data !== "string" || !data ) {
3 return null;
4 }
5 data = jQuery.trim( data );
6 if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
7   .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
8 .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
9 return window.JSON && window.JSON.parse ?
10 window.JSON.parse( data ) :
11 (new Function("return " + data))();
12
13 } else {
14 jQuery.error( "Invalid JSON: " + data );
15 }
16 },
posted @ 2010-11-10 14:20 jxin 阅读(309) 评论(3) 编辑
摘要: 1.什么引起了ajax不能跨域请求的问题?ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。2.有什么完美的解决方案么? 没有。解决方案有不少,但是只能是根据自己的实际情况来选择。 具体情况有: 一、本域和子域的相互访问: www.aa.com和book.aa.com 二、本域和其他域的相互访问: www.aa.com和www.bb.com 用 iframe 三、本域和其他域的相互访问: www.aa.com和www.bb.com 用 XMLHttpRequest访问代理 四、本域和其他域的相互访问: www阅读全文
posted @ 2010-11-03 10:10 jxin 阅读(2462) 评论(0) 编辑
摘要: 代码阅读全文
posted @ 2010-10-29 16:50 jxin 阅读(120) 评论(5) 编辑
摘要: [代码][代码][代码]原型抄写[代码][代码][代码]阅读全文
posted @ 2010-10-27 16:48 jxin 阅读(105) 评论(2) 编辑