资讯专栏INFORMATION COLUMN

【每日一包0026】delegates

tain335 / 1079人阅读

摘要:地址源码依赖委托机制,用于对象属性代理创建一个代理实例,使用对象下的对象作为被代理者接受一个方法,进行方法代理将上的方法直接代理到上属性的获取被代理属性的赋值代理赋值和获取值得双向代理被代理者中该属性有值就返回该值没有的话可以通过函数调用设

[github地址:https://github.com/ABCDdouyae...]

delegates (koa2源码依赖)
委托机制,用于对象属性代理
Delegate(proto, prop)创建一个代理实例,使用proto对象下的prop对象作为被代理者
method(name) 接受一个方法,进行方法代理

将request上的方法直接代理到ctx上

const delegate = require("delegates");

var ctx = {};

ctx.request = {
  fn: function(i){return i}
};

delegate(ctx, "request")
    .method("fn");

console.log(ctx.fn(1))
getter(name) 属性的获取被代理
var ctx = {
    request:{
        url: "localhost:8080"
    }
};

delegate(ctx, "request")
     .getter("url")


console.log(ctx.url);//localhost:8080
setter(name) 属性的赋值代理
var ctx = {
    request:{}
}

delegate(ctx, "request")
    .setter("other")

ctx.other = "1";

console.log(ctx.request.other)//1
access(name) 赋值和获取值得双向代理
var ctx = {
    request: {}
}

delegate(ctx, "request")
   .access("method")

ctx.method = "POST";
console.log(ctx.request.method);//"POST"

ctx.request.method = "GET";

console.log(ctx.method);//"GET"
fluent(name) 被代理者中该属性有值就返回该值,没有的话可以通过函数调用设置,返回ctx对象
var ctx = {
    request:{
        a : 1
    }
}

delegate(ctx, "request")
    .fluent("a")

console.log(ctx.a())//1
console.log(ctx.a(2))//{ request: { a: 2 }, a: [Function] }
console.log(ctx.a())//2

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99882.html

相关文章

  • 每日一包0026delegates

    摘要:地址源码依赖委托机制,用于对象属性代理创建一个代理实例,使用对象下的对象作为被代理者接受一个方法,进行方法代理将上的方法直接代理到上属性的获取被代理属性的赋值代理赋值和获取值得双向代理被代理者中该属性有值就返回该值没有的话可以通过函数调用设 [github地址:https://github.com/ABCDdouyae...] delegates (koa2源码依赖) 委托机制,用于对...

    shengguo 评论0 收藏0
  • 每日一包0026delegates

    摘要:地址源码依赖委托机制,用于对象属性代理创建一个代理实例,使用对象下的对象作为被代理者接受一个方法,进行方法代理将上的方法直接代理到上属性的获取被代理属性的赋值代理赋值和获取值得双向代理被代理者中该属性有值就返回该值没有的话可以通过函数调用设 [github地址:https://github.com/ABCDdouyae...] delegates (koa2源码依赖) 委托机制,用于对...

    rubyshen 评论0 收藏0
  • 每日一包0029】merge-descriptors

    摘要:地址源码依赖一个对象的属性继承另一个对象的属性及其属性描述符用法继承者,被继承者是否继承者有该属性的时候继承默认不继承返回继承后的新的对象当第三个参数为时候,原对象又该属性则没有继承被继承者的属性和属性描述符 [github地址:https://github.com/ABCDdouyae...] merge-descriptors (express源码依赖) 一个对象的属性继承另一个对...

    kun_jian 评论0 收藏0
  • 每日一包0029】merge-descriptors

    摘要:地址源码依赖一个对象的属性继承另一个对象的属性及其属性描述符用法继承者,被继承者是否继承者有该属性的时候继承默认不继承返回继承后的新的对象当第三个参数为时候,原对象又该属性则没有继承被继承者的属性和属性描述符 [github地址:https://github.com/ABCDdouyae...] merge-descriptors (express源码依赖) 一个对象的属性继承另一个对...

    printempw 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<