1. 自定义原型方法去重
// 字符串去重String.prototype.unique = function(){ var obj = {}, str = ''; for(var i = 0; i < this.length; i++){ var item = this[i]; if(!obj.hasOwnProperty(item)){ obj[item] = item; str += item; } } return str; }var str = 'dasdasfdafsd1232312dasdasfgsdg';var str1 = str.unique();console.log(str1);
// 计算字符出现次数String.prototype.strCount = function(){ var obj = {}; for(var i = 0; i < this.length; i++){ var item = this[i]; if(!obj.hasOwnProperty(item)){ obj[item] = 1; }else{ obj[item]++; } } return obj;}var str = '1111asdasdashellohell';var obj = str.strCount();console.log(obj);
2. 面试题
function Test(a, b, c) { var d = 0; this.a = a; this.b = b; this.c = c; function e() { d++; console.log(d); } this.f = e;}// GO = {// Test: function(){},// test1: undefined => new Test(),// test2: undefined => new Test()// }// Test.AO = {// d: undefined => 0,// e: function e(){},// }// f.AO => e.AO = {//// }var test1 = new Test();test1.f(); // 1test1.f(); // 2var test2 = new Test();test2.f(); // 1
function test(){ console.log(typeof(arguments)); // object}test(1, 2, 3, 4);
var test = function a(){ // 函数表达式的名字会被忽略 console.log(a); // 内部可以访问 console.log(test.name); // a}// console.log(a); // 外部会报错undefinedconsole.log(typeof(a)); // undefinedconsole.log(test.name); // a test();
// 判断星期几function test(day){ var weekday = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; return weekday[day - 1] !== undefined ? console.log(weekday[day]) : console.log('I don\'t know');}test(0);test(1);// 不用 day - 1,利用数组逗号加empty特性function test(day){ var weekday = [,'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; return weekday[day] !== undefined ? console.log(weekday[day]) : console.log('I don\'t know');}test(0);test(1);