xiaochao Blog

Stay Hungry. Stay Foolish.

每天一个前端知识(68):认识到this变量的隐式绑定问题

frontend

function CSVReader(separators) { this.separators = separators || [',']; this.regexp = new RegExp(this.separators.map(function(separator) { return '\\' + separator[0]; }).join('|...

每天一个前端知识(67):只将实例状态存储在实例对象中

frontend

// 实现一个简单的树形结构L类 // @1 错误的实现方式 function Tree(value) { this.value = value } Tree.prototype = { children: [], addChild: function(value) { this.children.push(value); } }; var l...

每天一个前端知识(66):使用闭包存储私有数据

frontend

function Counter() { // count信息只存在于函数的内部,外部无法直接访问 var count = 0; return { getCount: function() { return count; }, increment: function() { ...

每天一个前端知识(65):在原型中存储方法

frontend

function User(name, age) { // 一般属性 this.name = name; this.age = age; // 在实例属性上的方法 this.getName = function() { console.log('My name is ' + this.name); return this...

每天一个前端知识(64):使构造函数与操作符new无关

frontend

// 一步一步来实现一个不需要通过使用new操作符来创建对象的函数 // @1 function User1(name) { //'use strict'; this.name = name; } // 使用new var user1 = new User1('dreamapple'); console.log(user1); // User1 { name: 'dreama...

每天一个前端知识(63):始终不要修改__proto__属性)

frontend

function User(name) { this.name = name; } var user = new User('dreamapple'); console.log(user); // User { name: 'dreamapple' } console.log(user.__proto__); /* Object constructor:User(name) ...

每天一个前端知识(62):使用Object.getPropertyOf函数而不要使用__proto__属性)

frontend

var obj = Object.create(null); console.log('__proto__' in obj); // false console.log(Object.getPrototypeOf(obj)); // null // 可以使用 __proto__属性来模仿 Object.getPropertyOf() 函数 if('undefined' === typeof ...

每天一个前端知识(61):理解prototype,getPrototypeOf和__proto__之间的不同)

frontend

// 创建一个类 function Student(name, age) { this.name = name; this.age = age; } // 创建原型 Student.prototype.info = function() { console.log('My name is ' + this.name + ' and my age is ' + this...

每天一个前端知识(60):避免使用非标准的栈检查属性

frontend

function func() { //'use strict'; 严格模式下,下面的语句会报错 console.log(arguments.callee, arguments.caller); } function sayHi() { func(); } sayHi(); // [Function: func] undefined // 简易的栈追踪 functio...

每天一个前端知识(59):不要信赖函数的对象的toString方法

frontend

console.log((function(x) { return x + 1; }).toString()); /* * 输出结果 * function (x) { * return x + 1; * } * */ console.log((function(x) { return x + 1; }).bind(10).toString()); /* * fu...