js 使用原型链表演杂技

2023-08-16 21:30:11 +08:00
 cuberwr1

今天偶尔翻到之前学 js 时候想要模仿 kotlin 的一些链调操作写的一个小玩具,外加上一些工具函数,在我用 nodejs 写的一些爬虫啥的小玩具里面用起来还挺方便,不过那时候学 js 不久,后面也没完善,给大家看个乐子吧

module.exports = {
    import(){
        const functions={
            randomStr(str='abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ',len){
                const strLen=str.length
                let res=''
                for(i in this.range(0,len)){
                    res+=str[this.randomLen(strLen)]
                }
                return res
            },
            range(start,end,step=1){
                let arr=[]
                for(let i=start;i<=end;i+=step) arr.push(i)
                return arr
            },
            randomIn(start,end){
                return this.randomLen(end-start)+start
            },
            randomLen(len){
                return Math.floor(Math.random()*len)
            },
            repeat(i,cb){this.range(1,i).forEach(cb())}
        }
        Object.assign(globalThis,functions)
    },
    objEnhance(){
        const functions={
            pr() {
                console.log(this.valueOf())
                return this.valueOf()
            },
            also(cb){
                let it=this.valueOf()
                cb(it)
                return it
            },
            apply(cb){
                cb(this)
                return this
            },
            let(cb){
                return cb(this.valueOf())
            },
            run(cb){
                return cb(this)
            }
        }
        Object.assign(Object.prototype,functions)
    },
    importAndEnhance(){
        this.import()
        this.objEnhance()
    }
}

function test(){
    const util=module.exports
    util.objEnhance()
    util.import()
    'https://www.google.com/search?q=来点色图'.pr().let(encodeURI).pr().let(btoa).pr().let(atob).pr().let(decodeURI).pr()
}

test()

输出:

https://www.google.com/search?q=来点色图
https://www.google.com/search?q=%E6%9D%A5%E7%82%B9%E8%89%B2%E5%9B%BE
aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0lRTYlOUQlQTUlRTclODIlQjklRTglODklQjIlRTUlOUIlQkU=
https://www.google.com/search?q=%E6%9D%A5%E7%82%B9%E8%89%B2%E5%9B%BE
https://www.google.com/search?q=来点色图
1600 次点击
所在节点    分享创造
7 条回复
tutou
2023-08-17 09:09:37 +08:00
这也不算原型链阿
cuberwr1
2023-08-17 10:04:27 +08:00
@tutou string 上找不到的方法往上找 object ,这不是用了原型链吗
tutou
2023-08-17 11:05:21 +08:00
@cuberwr1 我眼瞎了,没看完。TVT
Jamy
2023-08-17 11:36:08 +08:00
链式调用跟原型链有啥关系
heyline
2023-08-17 15:36:33 +08:00
cuberwr1
2023-08-17 17:30:07 +08:00
@heyline #5 可以,很好,直接 npm 就能用,之后就用这个了
ruoxie
2023-08-20 11:01:38 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/965900

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX