问题对人有帮助,内容完整,我也想知道答案 1 问题没有实际价值,缺少关键内容,没有改进余地 有一个对象A: function A(){ this.Avar = 'hello'; } A.prototype.breadcrumb = { push: function(){ console.info(this.Avar); } }; var a = new A(); 我想添加一个breadcrumb对象,使用new A().breadcrumb.push,但是打印出来的this是{push: ...}对象,而不是A对象,我该怎么改造让他读的是A对象的上下文? 5 天前提问评论邀请回答编辑举报 提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表。同时,被你 @ 的用户也会收到通知
答案对人有帮助,有参考价值 2 答案没帮助,是错误的答案,答非所问 已采纳 function A() { this.Avar = 'hello' } A.prototype.breadcrumb = function() { const ctx = this return { push: function() { console.log(ctx.Avar) } } } new A().breadcrumb().push() 5 天前回答评论赞赏编辑 HaHa294 声望 提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表。同时,被你 @ 的用户也会收到通知
答案对人有帮助,有参考价值 2 答案没帮助,是错误的答案,答非所问 在不依赖实例的情况下是有方法的。不过不确定你的需求是什么,如果仅仅是个链式操作可以这样。 "use strict"; function A(){ this.Avar = 'hello'; } A.prototype.breadcrumb = function() { return { push: () => { console.log(this.Avar); } }; }; new A().breadcrumb().push(); // 'hello' 5 天前回答1 评论赞赏编辑 衍__207 声望 提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表。同时,被你 @ 的用户也会收到通知
答案对人有帮助,有参考价值 0 答案没帮助,是错误的答案,答非所问 在push上加一个let _this=this; 后面全用_this代替this就行了 5 天前回答评论赞赏编辑 Ping136 声望 提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表。同时,被你 @ 的用户也会收到通知
答案对人有帮助,有参考价值 0 答案没帮助,是错误的答案,答非所问 function A(){ this.Avar = 'hello'; var self = this; this.breadcrumb = { push:function(){ console.log(self.Avar); } }; }var aa = new A();aa.breadcrumb.push(); 5 天前回答评论赞赏编辑 babe71 声望 提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表。同时,被你 @ 的用户也会收到通知