• js被忽略的arguments


    抽出arguments

    在很多封装的插件源码上,定义函数或者建立类里,都有arguments的身影,比如用js封装类似java的Interface,就是这么个处处都有身影的arguments,在我日常开发中,几乎却忘了用,存在感可想可知

    var Interface = function (name, methods) {
        if (arguments.length != 2) {
            throw new Error('2个参数需要');
        }
        this.name = name;
        this.methods = [];
        for (var i = 0; i < methods.length; i++) {
            if (typeof methods[i] !== 'string') {
                throw new Error('方法名称应该是字符串');
            }
            this.methods.push(methods[i]);
        }
    }
    Interface.ensureImplements = function (object) {
        if (arguments.length < 2) {
            throw new Error('arguments at lest 2');
        }
        for (var i = 1; i < arguments.length; i++) {
            var interfacetmp = arguments[i];
            if (interfacetmp.constructor !== Interface) {
                throw new Error('not Interface');
            }
            for (j = 0; j < interfacetmp.methods.length; j++) {
                var method = interfacetmp.methods[j];
                if (!object[method] || typeof object[method] != 'function') {
                    throw new Error(method + '没有实现接口方法');
                }
            }
        }
    }

    arguments的定义

    它是js里的一个内置对象,每一个函数,都有一个arguments。搞过函数的人,应该清楚怎么传参,调用函数时,传不传参都可以,但如果函数没有声明参数名就传了参数时,那要如何拿到参数呢,这里就得想到arguments了,正如你想象的那样,它包含了所要传的参数,是一个伪数组,有自己的length,看着像数组,其实type类型是object。

  • 相关阅读:
    当使用vue的按键修饰符不起效果的时候怎么办?如@keyup.enter = '' ;
    Android 破解
    粒子跟随3
    关于国际化
    一些js及css样式
    Could not find method google() for arguments [] on repository container.
    redis
    window cmd 自动补全
    gradle中的 settings.gradle
    for(String s:list)的运行
  • 原文地址:https://www.cnblogs.com/murenziwei/p/15871938.html
Copyright © 2020-2023  润新知