javascript - 如何在 javascript 原型的控制台中调用函数?
问题描述
我使用了下面对我最初问题的回答中的以下代码:
const myForm = {
text : "Hello",
span1: '<span>',
span2: '</span>',
p1: '<p>',
p2: '</p>',
span: function() {
this.text = this.span1 + this.text + this.span2;
return this;
},
p: function() {
this.text = this.p1 + this.text + this.p2;
return this;
}
};
console.log(myForm.p().span().text)
如何修改代码以<p><span>Hello</span></p>
在 console.log(myForm.p().span()) 中接收,因为它以错误的顺序添加标签,首先是 p(),然后是 span(),我需要先 span()文本而不是 p() ?
解决方案
问题是,由于您希望方法可链接,因此每个方法必须return this
,而不是字符串。这意味着console.log(myForm.p().span())
将返回完整的对象。您可以执行以下操作:
const myForm = {
text : "Hello",
span1: '<span>',
span2: '</span>',
p1: '<p>',
p2: '</p>',
span: function() {
this.text = this.span1 + this.text + this.span2;
return this;
},
p: function() {
this.text = this.p1 + this.text + this.p2;
return this;
}
};
console.log(myForm.span().p().text)
您甚至可以走得更远,例如制作一个单一的参数方法:
const myForm = {
text : "Hello",
wrap : function(elems) {
for(let elem of elems.split(",")){
this.text = `<${elem}>${this.text}</${elem}>`
}
return this;
}
};
console.log(myForm.wrap("span,p,div,header").text);
推荐阅读
- android - 如何将 setImageDrawable() 与图像路径一起使用。安卓
- javascript - 在 react js 中访问 json 文件
- docker - buildozer 的 docker 容器内的权限被拒绝
- angularjs - 单击并在 Angular 中显示我的列表中的所有记录
- angular - Angular 4下拉菜单点击关闭
- javascript - 使用 Angular 5 指令从 JSON 对象创建动态表
- angular-material - 带有“搜索输入”作为最后一个选项卡的 Angular 材质选项卡
- c# - 如何在 App.config 上更改我的数据库文件的路径?
- php - PHP xPath 解析 SOAP
- seo - 每种语言一个站点地图图像,可能吗?