circle

circle 查看完整档案

深圳编辑  |  填写毕业院校  |  填写所在公司/组织 segmentfault.com/u/119 编辑
编辑

"It works on my machine" 在我机器上好好的!!!

当你遇到困难时:
1.Read the error
2.Search Google
3.Ask for help

个人动态

circle 回答了问题 · 4月16日

解决vue 限制 input 输入大小怎么做

  _ceshi(item, e) {
            let inputNumber = e.target.value
            if (/^\d+$/.test(inputNumber)) {
                if (inputNumber >= 1 && inputNumber <= item.max) {
                    console.log(inputNumber)
                    console.log(item.max)
                } else {
                    console.log('超过了最大值' + item.max)
                }
            } else {
                console.log('不是整数')
            }
        }
<div id="list">
   <input v-for="(item, index) in list" v-model="item.number" @input="_ceshi(item,$event)" />
</div>

关注 3 回答 2

circle 回答了问题 · 4月15日

解决css关于展开/收起动画 height overflow 高度100%无法产生动画问题

这样可以实现,给active_3,加行position: absolute;
http://jsrun.net/fL3Kp/edit

关注 3 回答 1

circle 赞了回答 · 4月4日

闭包 JS基础 编程题

  • 根据结果是通过 f1.getValue() 来取值,说明 foo() 返回一个对象
  • 根据结果 foo(1)(...) 说明 foo() 返回一个函数,可以理解为参数只有 1 个时返回函数
  • 根据结果 foo(...)(4).getValue() 说明 foo() 在参数只有1 个的时候也可能返回对象

综上,foo() 返回一个带额外属性(.getValue)的函数。

  • 当它作为一个函数使用的时候,其行为和 foo() 是一致的,可以考虑递归调用 foo()
  • 当它作为对象的时候,需要通过 getValue() 返回计算结果,所以这个结果可以在 getValue() 中计算出来,也可以作为一个对象状态(属性)保存起来
  • 由于存在函数连调 foo()(),而且后面的调用会累加前面的结果,所以上面一条中提及的计算结果用状态保存比较好,即可以用于后面的计算,也可以通过 getValue() 返回出去

综上分析:

var foo = function (...args) {
    // 函数,是将当前状态值和参数累加
    const add = (...moreArgs) => foo(add.sum, ...moreArgs);
    
    // sum 状态是当前参数的和
    add.sum = args.reduce((s, n) => s + n, 0);
    
    add.getValue = () => add.sum;
    return add;
}

这个问题的关键点不在于闭包(当然会用到闭包),而是柯里化的过程分析。

不过如果你想深入了解闭包可以看看这篇:还搞不懂闭包算我输(JS 示例)

@circle 的答案比我的简单,更容易理解。他那个是闭包实现的答案,更符合题主要求!把那个答案改写一下,不保存参数列表,直接保存中间结果是这样:

var foo = function (...args) {
    let sum = 0;

    const add = (...more) => {
        sum = more.reduce((s, n) => s + n, sum);
        return add;
    };
    add.getValue = () => sum;

    add(...args);
    return add;
}

关注 3 回答 2

circle 回答了问题 · 4月4日

闭包 JS基础 编程题

(function() {

    let foo = function(...args) {
        let argsArr = args

        function _add() {
            argsArr.push(...arguments)
            return _add;

        }
        _add.getValue = function() {
            let sum = argsArr.reduce(function(a, b) {
                return a + b
            })
            console.log(sum)

            return sum
        }
        return _add;
    }
    let f1 = foo(1, 2, 3)
    f1.getValue()
    let f2 = foo(1)(2, 3)
    f2.getValue()

    let f3 = foo(1)(2)(3)(4)
    f3.getValue()
}
)()

关注 3 回答 2

circle 回答了问题 · 3月30日

解决vue参数跳转会乱码?

decodeURIComponent('%7D')结果是个括号}
你看见没多了个}

${this.$route.query.areaId}}

关注 2 回答 3

circle 回答了问题 · 3月29日

这是什么对象?怎么换成原来的编码?

获取的是个Buffer数据,你试下buffer.toString('base64')转换下
`

关注 2 回答 1

circle 回答了问题 · 3月28日

解决vue3对ref定义的数组不能直接赋值吗?

ts 数组类型不一致,可以定义接口来约束返回数据类型

interface Test{
  arr:string[]
}

const arr= reactive<Test>({arr:[]})

关注 3 回答 2

circle 回答了问题 · 3月27日

我想用puppeteer爬取搜索引擎某些关键词的搜索结果数量,一共有几千个关键词,如何才能控制住一次性打开的网页不要太多。。。

不要把 browser.newPage()放进循环里,page应该是创建后复用,如果你每次创建一个page,那就需要用完page就应该关闭page.close(),否则内存肯定要炸

关注 3 回答 3

circle 回答了问题 · 3月26日

nodejs文件里面怎样执行命令npm init

你运行下要的是这个效果吗?

const readline = require('readline')
const rl = readline.createInterface({
  input:process.stdin,
  output:process.stdout
})
rl.question('你输入一句话试试?',(answer) => {
  console.log('你说的话是:'+ answer)
  rl.close()
})

关注 3 回答 2

circle 回答了问题 · 3月26日

vue3实现数据响应时为啥要用到Reflect去修改目标对象?

Proxy也不是万能的,总会有缺点,js一些内建对象,例如 MapSetDate 等不能被Proxy拦截,数组除外,对于简单数据处理,上面的代码完全可以

let map = new Map();

let proxy = new Proxy(map, {});

proxy.set('test', 1); //报错

另外Reflect.get/set第三个参数比较关键,可以确定this的指向

let myObject = {
    foo: 1,
    bar: 2,
    get baz() {
        return this.foo + this.bar;
    },
};
let myReceiverObject = {
    foo: 4,
    bar: 4,
};
Reflect.get(myObject, 'baz', myReceiverObject) 8
let Parent = new Proxy({
    _name: 'parent',
    get name() {
        return this._name
    }
},{
    get: function(target, prop, receiver) {
        return target[prop]
        //return Reflect.get(target, prop, receiver)
    }
})
let Child = {
    _name: 'child'
}
Child.__proto__ = Parent
// Child继承Parent
console.log(Child._name)
// 输出却是parent 用Reflect.get()方式结果是Child
console.log(Child.name)

proxy缺点

关注 5 回答 4

认证与成就

  • 获得 341 次点赞
  • 获得 50 枚徽章 获得 6 枚金徽章, 获得 21 枚银徽章, 获得 23 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2014-06-13
个人主页被 3.8k 人浏览