如何在获得它的属性的情况下创建一个函数?
例如:
myfunc = function(){
alert(this.a + ":" + this.b);
};
myfunc.a = 5;
myfunc.b = 6;
结果是5:6
答案 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();