xiaochao Blog

Stay Hungry. Stay Foolish.

每天一个前端知识(58):使用闭包而不是字符串来封装代码

frontend

var a = 1; var code = 'a = 123'; function handle() { eval(code); } handle(); console.log(a); // 123 谨记 当将字符串传递给eval函数以执行它们的API时,绝不要在字符串中包含局部变量引用。 接收函数调用的API优于使用eval函数执行字符串的API。 参考资料:https:...

每天一个前端知识(57):使用bind方法提取具有确定接受者的方法

frontend

function sayHello(name, words) { console.log('Hello, ' + name + words); } // 将函数与其参数的一个子集绑定的技术称为函数的柯里化 function sayHelloToDr(words) { //sayHello('dreamapple', words); // 使用bind sayH...

每天一个前端知识(56):使用变量保存arguments的引用

frontend

// 一个迭代器 错误的版本 function iterator() { var i = 0; var n = arguments.length; return { hasNext: function() { return i < n; }, next: function() { ...

每天一个前端知识(55):永远不要修改arguments对象

frontend

// 尝试修改arguments对象 function callMethod(obj, method) { var shift = [].shift; shift.call(arguments); shift.call(arguments); console.log(arguments); // { '0': 1, '1': 2 } console.l...

每天一个前端知识(54):使用arguments创建可变参数的函数

frontend

// 多参数函数 function multArgsFunc() { var sum = 0; for(var i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } console.log(multArgsFunc(1, 2, 3, 4)); //...

每天一个前端知识(53):使用apply方法通过不同数量的参数调用函数

frontend

// 使用call var obj1 = { sayHello: function(msg) { console.log('Hello,' + this.name + ' ' + msg); }, name: 'dreamapple' }; var obj2 = { name: 'dream' }; // 第一个参数是方法的调用者,剩余的参数就...

每天一个前端知识(52):使用call方法自定义接受者来调用方法

frontend

// 使用apply function compute() { var sum = 0; for(var i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } function wrapper(arr) { return compute.a...

每天一个前端知识(51):熟练掌握高阶函数

frontend

// 学会使用高阶函数 var arr = [1, 9, 3, 4, 2]; // 返回一个排序的结果 var arr1 = arr.sort(function(x, y) { if(x > y) { return 1; } else { return -1; } }); console.log(arr1); // [ 1...

每天一个前端知识(50):理解函数调用,方法调用及构造函数调用之间的不同

frontend

function hello() { console.log('Hello, World'); } // 函数的调用 hello(); // Hello, World var obj = { welcome: function() { console.log('Hello, ' + this.name); }, name: 'dreamappl...

每天一个前端知识(49):间接调用eval函数优于直接调用

frontend

var str = 'hello'; function test() { var str = 'world'; return eval('str'); } console.log(test()); // world var str1 = 'hello1'; function test1() { var str1 = 'world1'; //var e = ev...