string添加属性

给string对象添加属性

方法一:

var myObj = function(){ 
    this.study = "JavaScript"; 
} 
myObj.prototype.hobby = function() { 
    this.hobby = "See girl"; 
} 
var newObj = new myObj(); 
for ( var attr in newObj ) { 
    document.write( attr +"<br/>" ); 
}   

方式二


var superObj = { name:"xugang" }; 
var subObj = { age:20 }; 
function extend(superObj,subObj){ 
//获得父对象的原型对象 
    subObj.getSuper = superObj.prototype; 
//将父对象的属性给子对象 
    for(var i in superObj){ 
        subObj[i] = superObj[i]; 
    } 
} 
extend(superObj,subObj); 
for ( var s in subObj ) { 
    document.write( s +"<br/>" ); //遍历子对象的属性 
} 
//--> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用CGLIB动态添加属性时,你可以通过以下步骤实现: 1. 创建一个需要被增强的类,该类无法直接添加属性。 2. 创建一个类来扩展`net.sf.cglib.proxy.MethodInterceptor`接口,用于拦截方法调用并进行增强操作。 3. 使用CGLIB库生成代理对象,将该代理对象作为原始对象的子类返回。 4. 在拦截器中,可以使用`net.sf.cglib.beans.BeanGenerator`来动态添加属性。 下面是一个简单示例代码: ```java import net.sf.cglib.beans.BeanGenerator; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method; public class DynamicPropertyExample { public static class MyBean { public void printName() { System.out.println("Original method"); } } public static class PropertyInterceptor implements MethodInterceptor { private Object target; public PropertyInterceptor(Object target) { this.target = target; } public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { if (method.getName().equals("getProperty")) { // 添加动态属性逻辑 // 实际应用中可根据需要进行属性添加和获取 return "Dynamic Property Value"; } return method.invoke(target, args); } } public static Object createDynamicPropertyObject() { BeanGenerator generator = new BeanGenerator(); generator.addProperty("propertyName", String.class); // 动态添加名为propertyName的String类型属性 return generator.create(); } public static void main(String[] args) { MyBean bean = (MyBean) createDynamicPropertyObject(); Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(MyBean.class); enhancer.setCallback(new PropertyInterceptor(bean)); MyBean proxyBean = (MyBean) enhancer.create(); proxyBean.printName(); // 调用原始方法 System.out.println(proxyBean.getProperty()); // 动态获取属性值 } } ``` 在这个示例中,我们使用`BeanGenerator`来动态添加一个名为`propertyName`的String类型属性。然后,我们使用`Enhancer`来创建代理对象,并将代理对象传递给自定义的拦截器`PropertyInterceptor`。在`PropertyInterceptor`中,我们拦截了`getProperty`方法的调用,并返回动态添加属性值。 请注意,这只是一个简单的示例代码,实际情况下你可能需要根据具体需求进行更复杂的操作。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值