Javascript 将对象作为函数参数传递
Javascript passing object as function parameter
我对javascript很陌生,所以也许这是一个愚蠢的错误。我创建了一个类似于下面的对象:
function objA(){
this.prop1;
this.prop2;
this.prop3;
this.func1=function(){
alert('func1');
}
this.func2=function(){
alert('func2');
}
}
我现在有一个函数,我想在其中传递对象:
var foo=new objA;
function test(foo){....}
问题是当我调用test((时,我执行了objA(objA.func1和objA.func2(中的函数。我只想获取 objA 的属性值。我必须使用另一个函数和一个数组,用 objA 的属性填充数组,然后传递数组:
var arrayA={}
function fillArray(data){
arrayA.prop1=data.prop1;
arrayA.prop2=data.prop2;
arrayA.prop3=data.prop3;
}
function test(arrayA){....}
这是唯一的方法还是我做错了什么?
函数是对象的属性(它们是一等值(,因此它们像任何其他属性一样显示在for (var propName in myObj)
循环中。您可以通过以下方式避免进一步检查它们:
for (var prop in myObj){
if (!myObj.hasOwnProperty(prop)) continue; // Skip inherited properties
var val = myObj[prop];
if (typeof val === 'function')) continue; // Skip functions
// Must be my own, non-function property
}
或者,在现代浏览器中,您可以将特定属性(如函数(设置为不可枚举,这样它们就不会显示在for ... in
循环中:
function objA(){
this.prop1 = 42;
Object.defineProperty(this,'func1',{
value:function(){
...
}
});
}
有关此内容的更多信息,请参阅Object.defineProperty
或Object.defineProperties
的文档。
最后,如果你不需要将函数定义为闭包,你可以在对象的原型上定义它们,在这种情况下,hasOwnProperty
测试将导致它们被跳过:
function objA(){
this.prop1 = 42;
}
objA.prototype.func1 = function(){
// operate on the object generically
};
var a = new objA;
"func1" in a; // true
a.hasOwnProperty("func1"); // false
相关文章:
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 作为函数参数传递的匿名函数的范围
- 通过函数参数传递id
- 将数组值作为函数参数传递
- 是否需要初始化在 Javascript 中作为“类”构造函数参数传递的变量
- JavaScript 函数参数传递数组
- Angular2 将函数参数传递给构造函数
- 为什么我不能将角度变量作为函数参数传递
- jQuery - 基于作为函数参数传递的对象构建动态 if 语句
- 停止对作为函数参数传递到新列表的对象引用
- 在 JavaScript 中将数组作为内置函数参数传递
- AngularJS将范围变量名称作为函数参数传递
- Javascript 将对象作为函数参数传递
- 在对象上调用方法或将对象作为函数参数传递的差异
- 正确的方法:始终将所有变量作为函数参数传递
- 如何将动态创建的复选框值作为函数参数传递
- 节点简斯 |将对象作为函数参数传递
- 什么是将对象属性作为函数参数传递的良好策略/模式
- 将对象作为函数参数传递.不确定如何访问这些值
- 为什么我们要将函数参数传递到$scope$申请