Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据obj键执行功能_Javascript - Fatal编程技术网

Javascript 根据obj键执行功能

Javascript 根据obj键执行功能,javascript,Javascript,是否可以根据obj1 obj2 obj3键编写一些代码来执行功能 示例1obj1然后执行function a() 示例2obj2然后执行函数a()和函数c() 示例3obj3然后执行函数b()和函数c() 我看到一些包总是创建新对象并在第二个参数中传递对象 例如:let test=newb('test',{a:10,B:20}) (B是一个班级) 这看起来像是基于对象键执行某个操作。您在这里的最佳选择(排除可能建议完全不同方法的更多上下文)是将这些函数放入对象或映射中,然后将属性名称用作该对象或

是否可以根据
obj1 obj2 obj3
键编写一些代码来执行功能

示例1
obj
1然后执行
function a()

示例2
obj2
然后执行
函数a()
函数c()

示例3
obj3
然后执行
函数b()
函数c()

我看到一些包总是创建新对象并在第二个参数中传递对象

例如:
let test=newb('test',{a:10,B:20})
(B是一个班级)

这看起来像是基于对象键执行某个操作。

您在这里的最佳选择(排除可能建议完全不同方法的更多上下文)是将这些函数放入对象或映射中,然后将属性名称用作该对象或映射中的键来进行调用:

const函数={
(){
console.log('a');
},
b(){
console.log('b');
},
c(){
console.log('c');
}
};
设obj1={a:1};
设obj2={a:1,c:1};
设obj3={b:1,c:2};
函数调用obj(标签,obj){
控制台日志(标签);
for(对象的常量键。键(obj)){
功能[键]();
}
}
callForObj(“obj1:,obj1”);
callForObj(“obj2:”,obj2);

callForObj(“obj3:,obj3”)if
。但这并不保证在
c
之前调用
a
,因为对象不保证顺序,是吗?我想我误解了这个问题。看来顺序并不重要。@schroffl-啊,这是一个好观点,我并没有真正意识到顺序在问题中的重要性(我可以从两个方面来理解)。对象现在确实有顺序(从ES2015开始),甚至对于像
Object.keys
(从ES2020开始)这样的较旧操作也是如此,因此在现代JavaScript引擎中,上述对象保证在
c
之前调用
a
。但使用这种顺序很少有用或合适;如果顺序很重要,最好使用数组。@schroffl。关于财产顺序的问题,里面几乎没有不值得一读的东西。@ASDFGerte-Oriol对这个问题的回答现在已经过时了。(这取决于你想变得多么学究,因为问题是“ES6是否引入…”:-)ES2020使其甚至适用于
Object.keys
等。)
function a() {
     console.log('a');
}

function b() {
     console.log('b');
}

function c() {
     console.log('c');
}

let obj1 = {a:1}
let obj2 = {a:1, c:1}
let obj3 = {b:1, c:2}