《JavaScript语言精粹》摘抄

近日在看《JavaScript语言精粹》,复习下JavaScript基础,基础越牢,往上走的越稳,书中看到有些代码很不错,特此摘抄出来记录一下,以前一直都是把学习笔记放在网易云笔记,这次换到博客感受下效果,对比一下放哪边比较好。

经典用法

//给原型快速添加新方法
Function .prototype.method=function(name, func){

this.prototype[name]=func;

return this;

}

//给Object增加一个create方法,这个方法创建一个使用原对象作为其原型的新对象

Object.create=function(o){

var F=function(){};

F.prototype=o;

return new F();

}

//继承

Function.method(‘inherits’, function(Parent){

this.prototype=new Parent();

return this;

});

模块

String.method('deentityify', function(){
var entity = {
quot : '"',
lt : '<', gt : '>'
};

return this.replace(/&([^&;]+);/g,
function(a, b, c){
console.log(a,b,c);
var r = entity[b];
return typeof r === 'string' ? r : a;
});
})

模式模式利用函数作用域和闭包来创建被绑定对象与私有成员的关联。模块模式的一般形式是:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数;最后返回这个特权函数,或者把它们保存到一个可访问到的地方。使用模块模式就可以摒弃全局变量的使用,促进信息隐藏和其他优秀的设计实践。

记忆

var fibonacci = function(){
var memo = [0,1];
var fib = function(n){
var result = memo[n];
if(typeof result !== 'number'){
result = fib(n - 1) + fib(n - 2);
memo[n] = result;
}
return result;
}
return fib;
}();
console.log(fibonacci(10)); //55

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注