obj.name和obj['name']访问到的是同一个属性
时间: 2024-03-31 19:37:16 浏览: 20
是的,`obj.name` 和 `obj['name']` 都是用来访问对象 `obj` 中名为 `'name'` 的属性的语法。它们访问到的是同一个属性,只是使用了不同的语法形式。
在 JavaScript 中,我们可以使用点号语法 `.` 来访问对象的属性,例如 `obj.name` 就是访问 `obj` 中名为 `'name'` 的属性。点号语法的优势是比较简洁明了,适用于属性名是一个合法的标识符(identifier)的情况。
另一种访问对象属性的方式是使用方括号语法 `[]`,例如 `obj['name']` 也是访问 `obj` 中名为 `'name'` 的属性。方括号语法的优势是可以使用变量或表达式作为属性名,这在需要动态生成属性名的情况下非常有用。
需要注意的是,当使用方括号语法访问对象属性时,属性名必须用引号括起来,否则会被当做变量名解析。例如 `obj[name]` 中的 `name` 会被当做一个变量名解析,而不是字符串 `'name'`。
相关问题
pad(obj.DeviceName,10)
这段代码看起来像是用于格式化字符串输出,其中 `pad` 函数的作用是将字符串按照指定的长度进行填充,不足的部分用空格或其他指定字符进行填充。`obj.DeviceName` 是一个字符串, `10` 是指定的长度,可以根据实际需要修改。如果 `obj.DeviceName` 的长度小于 `10`,则在字符串末尾填充空格使其达到指定长度,如果 `obj.DeviceName` 的长度大于等于 `10`,则不进行任何操作,直接输出原字符串。
不同编程语言中实现字符串填充的方法可能不同,以下是一些示例代码:
Python:
```python
device_name = "abc"
formatted_name = device_name.ljust(10)
print(formatted_name) # 输出 "abc "
```
Java:
```java
String deviceName = "abc";
String formattedName = String.format("%-10s", deviceName);
System.out.println(formattedName); // 输出 "abc "
```
C++:
```cpp
#include <iostream>
#include <iomanip>
#include <string>
int main() {
std::string deviceName = "abc";
std::cout << std::left << std::setw(10) << deviceName << std::endl; // 输出 "abc "
return 0;
}
```
JavaScript:
```javascript
let deviceName = "abc";
let formattedName = deviceName.padEnd(10);
console.log(formattedName); // 输出 "abc "
```
请注意,上述代码仅供参考,实际使用时需要根据具体情况进行修改。
res.data.map((obj) => { if(obj.name == '商机') { data.push('/lic/opp') } else if(obj.name == '系统权限') { data.push('/lic/permission') } return obj }) 转成一个通用函数
可以将上述代码转化为一个通用函数如下:
```
function mapData(dataArr) {
const data = [];
dataArr.map((obj) => {
if(obj.name === '商机') {
data.push('/lic/opp');
} else if(obj.name === '系统权限') {
data.push('/lic/permission');
}
return obj;
});
return data;
}
```
这个函数接收一个数据数组 `dataArr`,并返回一个处理后的新数组 `data`。其中,通过 `map` 方法遍历数据数组中的每一个元素 `obj`,根据 `obj.name` 的值判断是添加 `/lic/opp` 还是 `/lic/permission` 到 `data` 数组中。最后返回 `data` 数组。