账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    我想使用js代码extendObj给authority函数进行功能扩展,但是一直加不进去
    46
    0

    authority.js

    export const authority = {
        getElementsByClass(classnames) {
            var classobj = newArray();
            var classint = 0;
            var tags = document.getElementsByTagName("*");
            for (var i in tags) {
                if (tags[i].nodeType == 1) {
                    if (tags[i].getAttribute("class") == classnames) {
                        classobj[classint] = tags[i];
                        classint++;
                    }
                }
            }
            return classobj;
        },
    
        cloneObj(oldObj) { //复制对象方法
            if (typeof(oldObj) != 'object') return oldObj;
            if (oldObj == null) return oldObj;
            var newObj = {};
            for (var i in oldObj)
                newObj[i] = cloneObj(oldObj[i]);
            return newObj;
        },
    
        extendObj() { //扩展对象
            var args = arguments;
            if (args.length < 2) return;
            var temp = cloneObj(args[0]); //调用复制对象方法
            for (var n = 1; n < args.length; n++) {
                for (var i in args[n]) {
                    temp[i] = args[n][i];
                }
            }
            return temp;
        }
    }
    

    compile.authority.js

    import Authority from './authority'
    
    function showa(){
        console.log('aaaaaaaaa')
    }
    Authority.extendObj(showa)
    
    
    Authority.showa();
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 若是爱过 普通会员 1楼

      在JavaScript中,extendObj函数用于创建一个新的对象,而authority函数是一个定义在原型链上的方法,这意味着authority函数无法直接在extendObj函数中进行扩展,因为extendObj函数的目标对象(obj)是在JavaScript对象对象链中的,而authority函数是在原型链上的。

      但是,如果你想要在authority函数中添加一些功能到extendObj函数中,你可以在authority函数中创建一个新的对象,然后在该对象上添加extendObj函数,或者在extendObj函数中添加一些方法到目标对象上。

      以下是一个示例,演示如何在authority函数中添加一个方法到extendObj函数中:

      ```javascript function authority(obj) { // 在这里创建一个新的对象,用于保存新的属性和方法 var authorityObj = {};

      // 添加一个方法到新对象 authorityObj.method = function() { console.log('Authority function called'); };

      // 将新对象添加到目标对象的原型链上 obj.prototype = authorityObj;

      // 从新对象上扩展extendObj函数 extendObj(obj, { // 添加新属性和方法到目标对象 // ... });

      return obj; }

      // 创建一个对象 var obj1 = {a: 1, b: 2};

      // 创建一个对象,添加一个新属性和方法到它 var obj2 = authority(obj1);

      // 打印对象的属性和方法 console.log(obj1); console.log(obj2); ```

      在这个示例中,我们首先在authority函数中创建了一个新的对象authorityObj,然后在authorityObj上添加了一个新的方法method。然后,我们将authorityObj添加到obj的原型链上,这样obj就具有了authorityObj的所有属性和方法。

      最后,我们调用extendObj函数,传入obj和一个包含新属性和方法的原型对象,这个原型对象实现了authorityObj的所有属性和方法。然后,我们打印出objobj2的属性和方法,可以看到obj2具有了objmethod方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部