Archive for JavaScript

借助AngularJS写优雅的代码

借助AngularJS写优雅的代码

接触AngularJS还真有点碰巧,在用JQuery写数据绑定的时候,我被数据对象和DOM之间的同步整烦了,要写一大堆方法绑定和取值/设值的代码逻辑,丑得要死。简单说来,就是:

  1. 数据对象发生变更以后,要及时更新DOM树;
  2. 用户操作改变DOM树以后,要回头更新数据对象。

这个问题还是举例来说清楚一些,比如我定义了这样一个queryObj:

{name: "sally

[......]阅读全文

分享到:

跨域方法汇总

跨域方法汇总

做Web开发经常需要面对跨域问题,跨域问题的根源是浏览器安全中的同源策略,比如说,对于http://www.a.com/1.html来说:

  • http://www.a.com/2.html是同源的;
  • https://www.a.com/2.html是不同源的,原因是协议不同;
  • http://www.a.com:8080/2.html是不同源的,原因是端口不同;
  • http://

[......]阅读全文

分享到:

从JavaScript的单线程执行说起

先看一段代码:

setTimeout(function(){
	alert("a");
}, 0);
while(1);
alert("b");

希望在马山可以弹出一个警告提示框“a”来,但是始终没有来;而且,在FireFox中跑还得到了这样的提示,并提示你是否要终止这段脚本的执行,遇事我选择终止以后,“a”倒是弹出来了,但是“b”却弹不出来了:

Warning: Unresponsive Sc

[......]阅读全文

分享到:

几道容易出错的JavaScript题目

几道容易出错的JavaScript题目下面这几道JavaScript题目大多来自于周五的一个小分享。都是很小的题目,但是很容易犯错。有一些是语言特性使然,有一些则是语言本身没有设计好而留下的陷阱。结果就是,遇到的人很容易陷进去骂娘,这些东西是略有些反直觉,感兴趣的不妨看看,平时我们还是尽量少些这样似是而非的代码。

1.

function Container( properties ) {
    var objthis = th

[......]阅读全文

分享到:

JavaScript使用for循环时出现的问题

JavaScript使用for循环时出现的问题 这个问题的讨论最初来自公司内部邮件,我只是把这个问题的讨论内容记录下来。

有一些项目组在定位问题的时候发现,在使用“for(x in array)”这样的写法的时候,在IE浏览器下,x出现了非预期的值。

具体说,如果自定义了Array.prototype.indexOf方法(譬如源于某prototype污染),也许是因为老版本IE浏览器并不支持array.indexOf方法,而开发者又很想用,那

[......]阅读全文

分享到:

你没有抓住Promises的要点

你没有抓住Promises的要点注:这篇文章翻译自《You're Missing the Point of Promises》,阅读这篇文章,你首先需要对于JavaScript中的Promises是什么有了解,否则,你可以先看一看这篇文章(英文),或者这篇文章(中文)掌握基础。有一些修改,另受水平所限,翻译的不当之处请参阅原文。

Promises是一种令代码异步行为更加优雅的抽象。如果用最基本的编码方式,代码是这种连续

[......]阅读全文

分享到:

用JavaScript截图

用JavaScript截图 使用JavaScript截图,这里我要推荐两款开源组件:一个是Canvas2Image,它可以将Canvas绘图编程PNG/JPEG/BMP的图像;但是光有它还不够,我们需要给任意DOM(至少是绝大部分)截图,这就需要html2canvas,它可以将DOM对象转换成一个canvas对象。两者的功能结合起来,就可以把页面上的DOM截图成PNG或者JPEG图像了,很酷。

Canvas2Image

[......]阅读全文

分享到:

Function Invocation Patterns

Function Invocation Patterns 今天看到微博上大家在讨论一个JavaScript的小问题,问题虽小,还是有思考的价值。我看到不少人对其展开了讨论,有很多答案,也有很多有意思的观点。学JavaScript的人很多,但是学好真不容易,哪怕就是基础的部分。

先看一下下面的代码:

var value = 500;
var obj = {
    value: 0,
    increment: function() {

[......]阅读全文

分享到:

Backbone.js

Backbone.js

注:教程请参见这里(本文有很多内容都是从这里翻译的),官方网站在这里;综合例子参见这里

Backbone.js是一个前端MVC框架,model能够绑定键值对和自定义事件,集合具备可枚举方法的富API,视图具备事件处理能力,并且可以通过RESTful的JSON接口和你已有的API通信。

Backbone.js

View

Backbone里的视图就是用来反映数据模型的,可以监听事件并响应,通过利用Underscore.

[......]阅读全文

分享到:

CommonJS

老实说,之前我对CommonJS也是一无所知,直到不久前Node.js火起来,我去研究它,才了解到Node.js其实是CommonJS的一个部分实现,我才关注起CommonJS来。

CommonJS

以前我们说起HTML,我们说起JavaScript,大家的印象似乎都停留在了“网页”上面,从2005年开始,因为Ajax的缘故,有一种叫做“前端程序员”的新型物种诞生了。

可是现在,前端程序员不甘心自己的一亩三分地

[......]阅读全文

分享到:

JavaScript实现继承的几种方式

JavaScript实现继承的几种方式

JavaScript虽没有给出继承的关键字,但是我们依然能够拿出一些好办法实现。

1、原型链继承:

var Base = function()  
{  
    this.level = 1;  
    this.name = "base";  
    this.toString = function(){  
        return "base";  
    };  
};

[......]阅读全文

分享到:

JavaScript并发下载

在IE6/7里JavaScript会从两个方面阻碍页面呈现:
script标签下面的网页资源在script加载完之前会停止请求、下载。
script标签下面的html元素在script加载完之前会停止渲染。

在ie6/7 firefox2/3 Safari3 Chrome1 和 opera下 script标签会阻碍下载:

JavaScript并发下载

虽然在ie8,safari4,chrome2下script可以并发,但依然阻

[......]阅读全文

分享到:

Javascript Memoizer

以下来自John Hann的实现,这段代码引起了我的注意,它用巧妙的方法把方法调用的结果缓存起来了。

代码解析:

// memoize: 使用memoization来缓存的通用方法 
// func: 要被缓存的方法 
// context: 方法执行上下文 
// Note: 方法必须是外部可访问的,参数是可字符序列化的 
function memoize (func, context) {

[......]阅读全文

分享到:

JavaScript重构攻略

JavaScript重构攻略

一、模块划分和命名空间

通常我们的团队中,开发人员在Java语言层面具备相当的技术素养,经验丰富,而且有许多成熟的、合理的规约,类型繁多的代码隐患检查工具,甚至在团队间还有计划内的评审和飞检。但是前端的代码不似后台,就像一个没人疼的孩子,不仅仅容易被低估、被轻视,导致质量低劣、可维护性差,技能上,更缺少优秀的前端开发人员。

JavaScript是前台代码中重要组成部分,随着版本的延续,产品

[......]阅读全文

分享到:

JSConf 2010

一年一度的JSConf大会又召开,这是2010的官网:http://2010.jsconf.us/

JSConf 2010

其中的Sliders请看这里:http://devthought.com/2010/05/03/jsconf-2010-slides

Chris Williams 和 Iterative Designs 创立了JSConf,这是JavaScript开发者的第一个专业会议。09年其实还有Mix09

[......]阅读全文

分享到:

Preview on Feedage: