写法1:最常用的写法
function test() {}
写法2:变量的形式
let a = () => {}
写法3:对象收编变量
let obj = {
test() {}
}
写法4:对象收编变量——链式调用
let obj = { test() { return this }, test2() { return this } } // 链式调用 obj.test().test2()
写法5:function也是对象的一种
let Obj = function () {} Obj.test = function () {} Obj.test()
写法6:function里return一个函数
function Obj() { return { test() {} } } let o = new Obj() o.test()
写法7:挂载原型链
let Fn = function () {} Fn.prototype.test = function () { console.log(1111); } let o = new Fn() o.test()
写法8:挂载原型链的另一种形式
let Fn = function () {} Fn.prototype = { test() {} } let f = new Fn() f.test()
写法9:挂载原型链——链式调用
let Obj = function () {} Obj.prototype.test = function () { return this } Obj.prototype.test2 = function () { return this } let fn = new Obj() fn.test().test2()
写法10:挂载原型链——链式调用的另一种方式
let Obj = function () {} Obj.prototype = { test() { return this }, test2() { return this } } let fn = new Obj() fn.test().test2()
写法11:挂载Function类(不传参的)
Function.prototype.test = function () { console.log(333) } // 两种调用方式 let f = function () {} f.test() let fn = new Function() fn.test()
写法12:挂载Function类(传参的)
Function.prototype.addMethod = function (name, fn) { this[name] = fn // 这里是this[name] = fn } // 调用方式1 var o = function () {} o.addMethod('test', function () { console.log(2); }) o.test() // 调用方式2 var p = new Function() p.addMethod('test2', function () { console.log(3); }) p.test2()
写法13:挂载Function——链式调用
Function.prototype.addMethod = function (name, fn) { this[name] = fn return this } var x = new Function() x.addMethod('test', function () { console.log(4); return this }) x.addMethod('test2', function () { console.log(5); return this }) x.test().test2() let y = function () {} y.addMethod('test3', function () { console.log(6); return this }) y.addMethod('test4', function () { console.log(7); return this }) y.test3().test4()
写法14:终极写法(链式添加方法和链式调用方法)
Function.prototype.addMethod = function (name, fn) { this.prototype[name] = fn return this } var Methods = function () {} Methods.addMethod('test', function () { console.log('last'); return this }).addMethod('test2', function () { console.log('last2'); return this }) // 只有这种调用方法 var x = new Methods() x.test().test2()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通