Redky

web前端开发/HTML/CSS/JavaScript

Author Archive

极限运动集锦

without comments


滑翔

Written by jim

一月 9th, 2012 at 8:56 上午

Posted in 体会生活

极限运动集锦

without comments

Written by jim

一月 7th, 2012 at 12:09 下午

Posted in 体会生活

极限运动集锦

without comments

Written by jim

一月 7th, 2012 at 12:01 下午

Posted in 体会生活

小知识点. (定期更新)

with 2 comments

在使用 jQuery 绑定的事件处理函数中, return, return false, e.preventDefault, e.stopPropagation 意思.
return -> 不向下执行;
e.preventDefault() -> 禁止默认事件;
e.stopPropagation() -> 禁止事件冒泡;
return false; -> 不向下执行, 禁止默认事件, 禁止事件冒泡;
@update 2012-01-03

防止命名冲突:
(function () {})(); // 使用匿名函数.
使用命名空间.

class 可以在多个位置使用. 在 JavaScript 中使用 class 时, 注意命名空间. root.find(‘.a’); sidebar.find(‘.a’);

JavaScript 对象: Boolean, Number, String, Function, Array, Date, RegExp, Object.
@update 2012-01-06

Written by jim

一月 3rd, 2012 at 9:29 下午

Posted in JavaScript

Tagged with

函数式编程

without comments

ps: 在网上看到”并行性编程和元数据” 是编程的趋势.

JavaScript 中的函数:
匿名函数, 函数做为值, 函数做为参数,函数做为返回值.

from web:
函数:
函数并不总是需要名称。
函数可以像其他值一样分配给变量。
函数表达式可以编写并放在括号中,留待以后应用。
函数可以作为参数传递给其他函数。

纯函数: 唯一的输入是它的参数,唯一的输出是它的返回值.
一个不规范的函数有可能会依赖一个全局变量或一些类成员数据。在这种情况下,函数的行为并不完全决定于它的参数值.相似的,一个不规范的函数有可能会更改一个全局变量或修改数据库。这种情况下,函数除了返回值外,还会附带一些额外操作.

纯函数具有亲系透彻性(referential transparency),也就是说,针对相同的输入值,它一定给出相同的输出值。函数输出不依赖系统时间、数据库状态以及任何没有显式的作为参数传入函数的东西。这也表明纯函数易于理解(因此也易于调试和测试)。

函数式编程的基石之一:不变性(immutability)

函数式编程和过程式编程:
#函数 -> 过程: 定义解决问题的过程. 函数式: 需要描述问题是什么.

函数式编程中使用到的 curry -> http://www.jimzhan.com/blog/archives/3035.

function curry(fn){
    var slice = Array.prototype.slice;
    var args = slice.call(arguments, 1);
    return function(){
        var innerArgs = slice.call(arguments, 0);
        var allArgs = args.concat(innerArgs);
        return fn.apply(null, allargs);
    }
}
 
// @param {Function}
Function.prototype.myqueue = function (fn) {
    var self = this;
    return function () {
        self();
        fn();
    };
};
 
Function.prototype.myqueue = function () {
    var slice = Array.prototype.slice;
    var argus = slice.call(arguments);
    var self = this;
    argus.unshift(self);
    return function () {
        for (var i = 0, max = argus.length; i < max; i++) {
            argus[i]();
        }
    };
};

jQuery 中的 proxy 方法:

proxy: function( fn, context ) {
    var args = slice.call(arguments, 2),
        proxy = function() {
            return fn.apply( context, args.concat( slice.call( arguments ) ) );
        };
    return proxy;
},
 
if ( typeof context === "string" ) {
    var tmp = fn[ context ];
    context = fn;
    fn = tmp;
}
 
function bind(fn, context){
    return function(){
        return fn.aplly(context,arguments);
    }
}

所谓函数柯里化,在计算机科学中是指的是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数。
用于创建以及设置好了一个或多个参数的函数.

在读新闻时, 想到这样: 扩展内置对象方法, 但是不破坏对象 prototype. 值得思考一下.
ps: 前端开发是个无底洞啊~

Written by jim

一月 3rd, 2012 at 9:21 下午

Posted in JavaScript

Tagged with