每日3+1-143

143 阅读2分钟

题目来源

  • 公众号[前端剑解-143]

[html] 请说说
标签的区别?

  • pre多行显示
  • code单行显示
  • 【注】看到网上很多说,pre保留空格和换行,我认为更准确的说法是code只是去除了换行符,其余两者都一样

对html使用的反思

  • 除非是考虑语义化问题
  • 单纯的追求样式的问题,还是css好一些

[css] 如何自定义radio按钮的样式

  • -webkit-appearance:none;清除默认样式
  • 实战

[js] 自己实现数组的 map、filter、find 方法

map

Array.prototype._map = function(callback, thisArg) {
    if (Object.prototype.toString.call(callback) != "[object Function]") {
        throw new TypeError(callback + " is not a function");
    }
    const len = this.length;
    const arr = JSON.parse(JSON.stringify(this))
    for (let i = 0; i < len; i++) {
        const val = callback.call(arr, arr[i], i, this)
        arr[i] = val;
    }
    return arr;
}

filter

filter原理完成,every and some原理也完成了

Array.prototype._filter = function(callback, thisArg) {
    if (Object.prototype.toString.call(callback) != "[object Function]") {
        throw new TypeError(callback + " is not a function");
    }
    const len = this.length;
    const arr = JSON.parse(JSON.stringify(this))
    const rtn=[];
    for (let i = 0; i < len; i++) {
        const val = callback.call(arr, arr[i], i, this)
        if(val){
            rtn.push(arr[i])
        }
    }
    return rtn;
}

find

find本质上也是filter的一种变种

Array.prototype._find = function(callback, thisArg) {
    if (Object.prototype.toString.call(callback) != "[object Function]") {
        throw new TypeError(callback + " is not a function");
    }
    const len = this.length;
    const arr = JSON.parse(JSON.stringify(this))
    const rtn=[];
    for (let i = 0; i < len; i++) {
        const val = callback.call(arr, arr[i], i, this)
        if(val){
            return arr[i];
        }
    }
    return rtn;
}

总结

  • 最近有些懒了,也在思考,接下来的技术路线和人生路怎么走
  • 这道题,纠结了两天,主要是对于原型链理解的不深,这次也让我对于callback.call有更加深刻的理解
  • 同时,接下来除了每日任务之外,也要把call/apply从新打实才行
  • 同时有什么不懂的,应该参考Polyfill
  • 加油!!!

[软技能] 你有自己的博客吗?维护的频率是多久呢?

  • 博客园
  • github page
  • 基本不更新了,现阶段正在掘金上更新,开始主要侧重通过刷题,来提升自己对于知识的理解和实战能力