前端面试题整理——手写简易jquery

class jQuery {
        constructor(selector) {
            const result = document.querySelectorAll(selector)
            console.log(result)
            const length = result.length
            for (let i = 0; i < length; i++) {
                this[i] = result[i]
            }
            this.length = length
        }
        get(index) {
            return this[index]
        }
        each(fn) {
            for (let i = 0; i < this.length; i++) {
                const ele = this[i]
                fn(ele)
            }
        }
        on(type, fn) {
            return this.each(ele => {
                ele.addEventListener(type, fn, false)
            })
        }
    }

    //考虑扩展性
    //插件
    jQuery.prototype.dialog = function (info){
        alert(info)
    }
    //复写机制
    class MyJQuery extends jQuery{
        constructor(selector){
            super(selector)
        }
        addClass(className){}
        style(data){}
    }

    //使用
    const jq = new jQuery('p')
    console.log(jq.get(0))
    jq.each(function(el){
        console.log(el)
    })
    jq.on('click',function(el){
        console.log(el)
    })

考点:

  • 原型和原型链的理解
  • dom操作
(0)

相关推荐

  • lodash函数库 -- drop函数

    drop 函数 drop函数功能:按顺序删除数组元素,当n为正数时,从左删除n个元素;当n为负数时,从右删除n个元素.;当n为0时,创建一个副本. drop返回值:返回一个新的数组. /** * 创建 ...

  • 11.jQuery工具方法$.Callbacks()的简单实现

    jQuery工具方法$.Callbacks()的简单实现: (function () { //创建一个jQuery构造函数 function jQuery(selector) { return new ...

  • jQuery

    顶哥说私人小网站已上线 欢迎大家访问:    http://www.dintalk.cn jQuery本质上就是一个外部的js文件(jQuery.js),该文件中封装了很多js代码,实现了很多功能.并 ...

  • 前端面试题整理——手写bind函数

    var arr = [1,2,3,4,5] console.log(arr.slice(1,4)) console.log(arr) Function.prototype.bind1 = functi ...

  • 解析Jquery语法是什么?

    Jquery是一种快速,小巧,功能丰富的JavaScript库,可以让html文档遍历和操作,事件处理,动画和ajax更加容易使用的一种api,可以在多种浏览器中工作. 封装了JavaScript常用 ...

  • 前端面试题整理——手写AJAX

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  • 前端面试题整理——原型和原型链

    Class的使用: // 父类 class People { constructor(name) { this.name = name } eat() { console.log(`${this.na ...

  • 前端面试题整理——深拷贝

    const obj = { a: 100, b: { b1: [1, 2, 3], b2: 'string' }, c: ['a', 'b', 'c'] } /* * 没做深拷贝的效果 const o ...

  • 前端面试题整理——作用域和闭包

    什么是闭包,闭包的表现形式: // 作用域应用的特殊情况,有两种表现: // 函数作为参数被传递 // 函数作为返回值被返回 // 函数作为返回值 function create() { let a ...

  • 前端面试题整理——VUE双向绑定原理

    VUE2.0和3.0数据双向绑定的原理,并说出其区别. 代码: <!DOCTYPE html> <html lang="en"> <head> ...

  • 前端面试题整理——Javascript基础

    常见值类型: let a; //undefined let s = 'abc'; let n = 100; let b = true; let sb = Symbol('s'); let nn = N ...

  • 前端面试题整理——HTML/CSS

    如何理解语义化: 对应的内容是用相应意思的标签,增加开发者和机器爬虫对代码的可读性. 块状元素和内联元素: 块状元素有:display:block/table:有div h1 h2 table ul  ...

  • 网络编程及前端面试题!Python入门

    当我们学习Python时,需要掌握的的知识有很多,除了有关Python的专业知识外,我们还需要学习网络编程.前端等知识,对此这篇文章为大家总结一下Python常见面试题之网络编程及前端的问题. 第一: ...