xiaochao Blog

Stay Hungry. Stay Foolish.

每天一个前端知识(88):使用结构类型设计灵活的接口

frontend

function Rectangle(width, length) { this.width = width; this.length = length; } Rectangle.prototype.getArea = function() { return this.width * this.length; }; // 我们可以使用结构类型 function rec...

每天一个前端知识(87): 避免不必要的状态

frontend

// 无状态的API console.log('hello'.toUpperCase()); // HELLO // 定义一个类名 和一个有状态的方法 function User(name, age) { this.name = name; this.age = age; } User.prototype.setAge = function(age) { this.a...

每天一个前端知识(86): 接收关键字参数的选项对象

frontend

// 定义一个接受参数的选项对象的函数 function Alert(obj) { this.level = obj.level; this.msg = obj.msg; } var ale = new Alert({ level: 0, msg: 'hello' }); console.log(ale); // Alert { level: 0, msg: ...

每天一个前端知识(85):将undefined看做没有值

frontend

// 我们应该判断参数是否是undefined来决定是否使用默认值 function Element(width, height) { this.width = width === undefined ? 100 : width; this.height = height === undefined ? 100 : height; } var ele = new Elemen...

每天一个前端知识(84):保持一致的约定

frontend

// 函数名尽量能够表达我们的意思 // 参数的顺序,名字符合习惯的约定 function Rectangle(width, height) { this.width = width; this.height = height; } var rect = new Rectangle(10, 20); console.log(rect); // Rectangle { widt...

每天一个前端知识(83):数组字面量优于数组构造函数

frontend

var a1 = new Array(8); console.log(a1, a1.length); // [ , , , , , , , ] 8 var a2 = [8]; console.log(a2, a2.length); // [ 8 ] 1 function fn(Array) { return new Array(1, 2, 3); } var a3 = fn(Str...

每天一个前端知识(82):在类数组对象上复用通用的数组方法

frontend

// 这种形式一般会用于函数的参数arguments属性 function fn() { console.log(arguments); console.log([].slice.call(arguments, 0)); console.log(['array'].concat([].slice.call(arguments))); } fn(1, 2, 3); //...

每天一个前端知识(81):迭代方法优于循环

frontend

// 传统的循环需要我们手动控制循环的条件,易出错 var arr = [1, 2, 3, 5]; for(var i = 0, n = arr.length; i < n; i++) { console.log(arr[i]); } // 我们可以使用数组的forEach替代,更方便一些 arr.forEach(function(val, index) { conso...

每天一个前端知识(80):数组迭代要优先使用for循环而不是for...in循环

frontend

var scores = [1, 2, 3, 4, 5]; var total = 0, aver = 0; for(var score in scores) { total += score; } console.log(total); // 001234 aver = total / scores.length; console.log(aver); // 246.8 t...

每天一个前端知识(79):避免在枚举期间修改对象

frontend

function Member(name) { this.name = name; this.friends = []; } var a = new Member('Alice'), b = new Member('Bob'), c = new Member('Carol'), d = new Member('Dieter'), e = new...