js中获取对象值obj[‘name‘]和obj[true]等的区别

js中添加对象obj['name']和obj[true]等的区别

一、获取对象属性值

obj = {
        name: 'js',
        age: 18,
        1: 8,
        true: '布尔值',
        false: '错误',
    }
  // .方法后面跟的必须是一个指定的属性名称,而中括号方法里面可以是变量
   console.log(obj.name) //属性名称
   let newName = 'name'
   console.log(obj[newName]) //变量
   
   //不加双引号的话,js会认为这是变量名,而这个变量是不存在的
    console.log(obj[name]) //变量名,没有找到变量name
    console.log(obj['name'])
    
    //如果属性名是数字,则必须有双引号,并且用[] 方括号访问
    console.log(obj['1']) 

但是

猜测原因可能是因为JS内置对象

 //如果键名是布尔或者是数字,不规则写法也可以,
 obj[false], obj[name], obj[1]
 '错误'      underfined   8

二、添加对象属性值

  //两种方法都可以添加属性,
  //但是当动态为对象添加属性时,必须使用中括号【】,不可用点方法
     obj.name = 'html'
     obj['age'] = 20
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用反射来实现,示例代码如下:Class clazz = obj.getClass(); Field field = clazz.getDeclaredField(propertyName); field.setAccessible(true); Object value = field.get(obj); ### 回答2: 在Java,我们可以使用反射来获取对象某个属性的。下面是一个示例方法,可以根据对象和属性名获取属性的: ```java import java.lang.reflect.Field; public class PropertyInfoUtil { public static Object getPropertyValue(Object obj, String propertyName) { try { // 获取对象的Class Class<?> objClass = obj.getClass(); // 根据属性名获取对应的Field对象 Field field = objClass.getDeclaredField(propertyName); // 设置可访问,因为有些属性是私有的 field.setAccessible(true); // 返回属性的 return field.get(obj); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { // 示例用法 Person person = new Person("John", 25); String name = (String) getPropertyValue(person, "name"); int age = (int) getPropertyValue(person, "age"); System.out.println("Name: " + name); System.out.println("Age: " + age); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 上述示例代码定义了一个工具类 `PropertyInfoUtil`,其的 `getPropertyValue` 方法可以通过反射获取对象指定名称的属性的。 在 `main` 方法,我们创建了一个 `Person` 类的实例,然后分别使用 `getPropertyValue` 方法获取了 `name` 和 `age` 属性的,并打印出来。 需要注意的是,由于此方法使用了反射,所以在一些特殊情况下可能会抛出异常,如属性不存在或不可访问。因此我们通过 `try-catch` 捕获可能出现的异常,并返回 `null`。需要在实际使用时进行异常处理。 ### 回答3: 可以使用Java的反射机制来编写一个方法来获取obj对象名为propertyName的属性的。具体的代码如下: ```java import java.lang.reflect.Field; public class Main { public static Object getPropertyValue(Object obj, String propertyName) throws NoSuchFieldException, IllegalAccessException { Class<?> clazz = obj.getClass(); Field field = clazz.getDeclaredField(propertyName); field.setAccessible(true); return field.get(obj); } public static void main(String[] args) { MyClass myObj = new MyClass(); myObj.setName("John"); myObj.setAge(25); try { String name = (String) getPropertyValue(myObj, "name"); int age = (int) getPropertyValue(myObj, "age"); System.out.println("Name: " + name); System.out.println("Age: " + age); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } } } class MyClass { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 这个方法使用Java的反射机制,首先获取obj对象的Class对象,然后通过Class对象的getDeclaredField方法获取到名为propertyName的私有属性(如果属性是公有的,也可以使用getField方法)。接下来设置该属性的可访问性为true,然后使用Field对象的get方法获取属性的。在示例,我们创建了一个MyClass对象,并为其设置了name和age属性的。然后通过调用getPropertyValue方法,分别获取到了name和age的,并打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值