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(); // 1
test1.f(); // 2
var 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); // 外部会报错undefined
console.log(typeof(a)); // undefined
console.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);