获得它的属性的函数

时间:2017-08-14 10:38:44

标签: javascript function

如何在获得它的属性的情况下创建一个函数?
例如:

myfunc = function(){
    alert(this.a + ":" + this.b);
};
myfunc.a = 5;
myfunc.b = 6;

结果是5:6

3 个答案:

答案 0 :(得分:1)

有两种方法。第一个,正如其他人提到的那样,是在函数说明中命名参数:

function foo(a, b) {
    alert(a + ':' + b);
}

foo('hello', 'world'); // Output "hello:world"

另一种方式是变量可用,其中包含所有函数参数,称为arguments

function bar() {
    alert(arguments[0] + ':' + arguments[1]);
}

bar('hello', 'world'); // Output "hello:world"

应该注意的是,虽然它看起来像一个数组,但arguments变量是JavaScript Array对象的一个​​实例,唯一的Array可与arguments一起使用的属性为.length

答案 1 :(得分:0)

试试这个:



myfunc = function(){
    alert(this.a + ":" + this.b);
};

myfunc.call({a: 5, b: 6});




当你使用call函数时,第一个参数是你的函数this,第二个参数是你的函数。 call函数只是调用您的函数,并将{a: 5, b: 6}分配给myfunc这个。

答案 2 :(得分:0)

这可以通过闭包来完成:



var myFunc = (function(a, b) {

  return function() {
    console.log(a + ":" + b);
  }

})(5, 6)

myFunc();




这可以通过prototype进行扩展,以创建类似行为的类:



var myFunc = (function () {
    function myFunc(a, b) {
        if (a === void 0) { a = 5; }
        if (b === void 0) { b = 6; }
        this.a = a;
        this.b = b;
    }
    myFunc.prototype.log = function () {
        console.log(this.a + ":" + this.b);
    };
    return myFunc;
}());
var a = new myFunc();
a.log();
new myFunc().log();
new myFunc(1, 10).log();
//ACCESS ATTRIBUTE
console.log("ACCESSING", a.a);
//OVERWRITE ATTRIBUTE
a.a = 11;
//ACCESS ATTRIBUTE
console.log("ACCESSING", a.a);
a.log();