extend和子创jq

82 阅读1分钟

$.extend()函数用于将一个或多个对象的内容合并到目标对象

$.extend([deep],target,objectN)
  • deep 可选。 Boolean类型 指示是否深度合并对象,默认为false
  • target Object类型 目标对象,其他对象的成员属性将被附加到该对象上
  • objectN 需要被合并的对象
  • 默认为false,不深度合并对象 banana的对象的值会被object2的值直接覆盖
  • 把deep改为true 深度合并对象 banana的对象的值相同的属性会被覆盖不相同的属性仍然保留
var car2 = {
            carName:"保时捷",
            color:{name:"帅酷黑"}
        }
        /* 1、把car1进行深度合并 把值打印到控制台上 */
        /* 2、把car1进行 不深度合并 把值打印到控制台上 */
       function showCar(obj){
            /* car1是汽车的默认属性 */
            var car1 = {
                color:{name:"水晶白",price:"1000w"}
            }
            /* 我们可以通过extend对原来的默认属性进行拓展 */
            console.log(obj);
            $.extend(true,car1,obj)
            document.write(`汽车的名字:${car1.carName}   `);
           document.write(`汽车的颜色:${car1.color.name}   `);
           document.write(`汽车的价格:${car1.color.price}`);
       }
           showCar(car2);

简单的自制jq

(function () {
    function $(element, ex, value) {
        let ele = document.querySelector(element);
        ele.css = function (key, value) {
            this.style[key] = value
        }
        ele.show = function () {
            this.style.display = 'block'
        }
        ele.hide = function () {
            this.style.display = 'none'
        }
        ele.removeclass = function (className) {
            this.className = this.className.replace(this.className, '');
        }
        ele.addclass = function (className) {
            this.className = className;
        }
        ele.click = function(callback){
            this.onclick = callback
        }
        return ele;
    }
    window.$ = $;
})()