当函数作为对象的属性值存在时,我们通常把它称为对象的方法。例如,obj 对象的 sayName() 方法

当函数作为对象的属性值存在时,我们通常把它称为对象的方法。例如,obj 对象的 sayName() 方法
 var obj = {
            name: '张康',
            sayName: function () {
                return this.name;
            }
        };
        
        // 定义函数 foo
        function foo(max) {
            console.log(max)
        }

        // 定义函数 bar
        function bar(a, b, callback) {
            var max = -1;

            if (a > b) {
                max = a;
            } else {
                max = b;
            }
            // 在 bar 函数中调用传入的函数
            callback(max)

        }

        // 将 foo 函数作为 bar 函数的实参
        bar(12, 99, foo)
        
        上面的代码可以被简写成如下形式:
         function bar(a, b, callback) {
             if (a > b) {

                 callback(a)
             } else {
                 callback(b)
             }
         }

         bar(12, 99, function (max) {
             console.log(max)
         })
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值