董俊俊 的个人动态
  • 董俊俊 回答了问题
    2个月前

    php 在不知道变量参数的情况下,实现调用想要顺序

    不知道参数,这个其实可以用反射类relation来搞定

    // 其中Test为类名
    $ref = new ReflectionClass('Test');
    // A为类下面的方法名
    $method = $ref->getMethod('A');
    // 开始传递参数,其中vars为传递的参数集合.
    $result = $method->invokeArgs(new Test(),$vars)

    这个就是反射.详细请查阅文档Reflection
    当然这个是类的调用,如果是单纯的方法,请使用ReflectionFunction,
    请根据具体的实例来new具体的reflection

  • 董俊俊 发布了文章
    2个月前

    使用 Laravel 开发 SPA 时, Routing 的正确姿势

    缘起通常开发一个 SPA 的起手式是新建两个工作目录:一个 client 目录用于存放前端源代码,一个 laravel 目录用于开发 webservices 功能以及后台面板。前后端分离,互不干扰。例
  • 董俊俊 回答了问题
    2个月前

    Promise.resolve有什么用处?

    当你的数据不是promise实例,或者你不知道他是不是promise,而你又想把他当做promise实例来使用的时候

    比如如果本地有数据data返回data,没有则请求

    Promise.resolve(data ? data : getData()).then(...)
  • 董俊俊 回答了问题
    2个月前

    typescript中boolean类型的自动转换问题

    默认值

    默认值可以让你在属性为 undefined 时使用缺省值:

    function keepWholeObject(wholeObject: {a: string, b?: number}) {

    let {a, b = 1001} = wholeObject;

    }
    现在,即使 b 为 undefined , keepWholeObject 函数的变量 wholeObject 的属性 a 和 b 都会有值

  • 董俊俊 回答了问题
    2个月前

    执行composer require 一会儿就提示“已杀死”

    一般是内存不足导致进程被杀死。

    没办法增大物理内存的话可以考虑扩容 swap 分区。

    参考这篇:https://www.jianshu.com/p/fac...

  • 董俊俊 回答了问题
    2个月前
  • 董俊俊 提出了问题
    2个月前
  • 董俊俊 回答了问题
    2个月前

    一个面试题关于函数的优先级

    挺有意思的一道题。

    第一个 2 不用多解释,直接用的是 Foo.getName 静态方法。

    第二个为啥是 4 呢?你会注意到最后有一个 var getName = funtion() {} 和一个 function getName,后声明的 function 咋没覆盖前面的 var 呢?因为 function 有函数提升,虽然是后声明的,反而会被提到当前作用域最前面去执行。(你可能会说 var 不也有变量提升吗?因为 JS 里函数是一等公民,函数提升比变量提升更优先!)

    第三个和第四个为啥都是 1 呢?因为没 new 所以 Foo() 里的返回值 this 实际是 window,而 window.getName 上一步说了因为函数提升的原因,在执行 Foo() 之前其实是那个 var getName;但 Foo() 方法里给这个变量重新赋值了!

    第五个是 2 也没啥讲的,虽然有 new 了,但 Foo 是引用而非调用,所以还是静态方法。

    第六个第七个因为有 new 了、且调用了 Foo(),所以此时实际相当于实例化了一个 Foo 类型对象出来,那么后面的 .getName() 就是原型链方法了。


    P.S. 最后两个连着的 new 可能容易迷惑,实际上的执行顺序是:

    let a = new Foo();
    let b = a.getName();
    let c = new b;
  • 董俊俊 回答了问题
    2个月前

    关于渲染进程间通信,ipcRenderer.sendTo接收不到消息的问题

    出现这个问题的原因是electron的版本太高了,后来换成低版本的发现是OK的,至于打包出来的没有问题就很奇怪了
    之前electron版本是 4.1.5 后来改成3.0.0

  • 董俊俊 回答了问题
    2个月前

    ThinkPHP的目录安全文件在什么情况下可以关闭?

    关闭web服务器的目录浏览,就可以删掉index.html了。

    或者。参考laravel的方式。讲项目入口的index.php不要放在根目录,而是放在根目录下的public目录,然后将web服务器的root设置到项目根目录的public文件夹。这样。用户就只能访问到相对于public目录之下的文件了。你项目中的其他文件和文件夹就安全了。

  • 董俊俊 回答了问题
    2个月前

    props default 数组/对象的默认值应当由一个工厂函数返回

    proE: {
        type: Array,
        default: function () {
            return []
        }
    }
  • 董俊俊 回答了问题
    2个月前

    html style标签属性 css

    <div class="part" style='height:600px'></div>
  • 董俊俊 回答了问题
    2个月前

    普通html项目的style标签的scoped属性不生效

    webpack项目里是利用插件实现的
    目前普通html里style的scoped属性只有火狐支持

  • 董俊俊 回答了问题
    2个月前

    普通html项目的style标签的scoped属性不生效

    你用的什么浏览器,scoped属性兼容性要求很高

  • 董俊俊 回答了问题
    2个月前

    在退出登录 / 修改密码时怎样实现JWT Token失效?

    其实要完美地失效JWT是没办法做到的。

    "Actually, JWT serves a different purpose than a session and it is not possible to forcefully delete or invalidate an existing token."
    这篇文章写得比较简单易懂:https://medium.com/devgorilla...

    有以下几个方法可以做到失效 JWT token:

    1. 将 token 存入 DB(如 Redis)中,失效则删除;但增加了一个每次校验时候都要先从 DB 中查询 token 是否存在的步骤,而且违背了 JWT 的无状态原则(这不就和 session 一样了么?)。
    2. 维护一个 token 黑名单,失效则加入黑名单中。
    3. 在 JWT 中增加一个版本号字段,失效则改变该版本号。
    4. 在服务端设置加密的 key 时,为每个用户生成唯一的 key,失效则改变该 key。
  • 董俊俊 回答了问题
    2个月前

    Python 怎么获取json 里的特定的某个值??

    没遇到你说的这个问题, python2.7, 如果你指的是因为"a"的那2个双引号导致的字符串格式不对,那么可以试试下面的3种写法,都是可以的,注意要么是3个"""包起来的字符串,要么是转义,要么是用''括起来

    import json
    
    # s = r"""{"a":1,"b":2}"""
    s = r'{"a":1,"b":2}'
    # s = "{\"a\":1,\"b\":2}"
    
    result = json.loads(s)
    
    print result.values()
  • 董俊俊 提出了问题
    2个月前
  • 董俊俊 回答了问题
    2个月前

    typescript的入参(被解构过的入参)怎么设置默认值?

      type Obj = { a: number, b: number, c: any }
      const { a, b: x, c: y = 3 }: Obj = obj;
  • 董俊俊 回答了问题
    2个月前

    微信浏览器打开链接出现白屏,怎么解决?

    估计是 # 的问题。

    把路由的 hash 模式改为 history 试试,记得要配置服务器,具体怎么配 vue-router 文档里有

最近访客
  • 小花花
    小花花 4周前