gpt4 book ai didi

javascript - 如何将此对象转换为点表示法?,这样我就可以在一行上调用多个方法

转载 作者:行者123 更新时间:2023-11-28 13:25:30 25 4
gpt4 key购买 nike

我对 OOP 很陌生,每次仍在学习新技术,这是我的任务之一,我倾向于将其作为日常学习的基础,以便更好地学习...

无论如何,回到问题;基本上我有这个应用程序对象,我想在调用方法时将其转换为点表示法...

var app = function() {

var DEFAULTS = {
websiteName: 'Stylish App',
websiteUrl: 'http://stylishapp.ltd',
websiteCopyright: 'Copyright ' + new Date().getFullYear() + ' ' + this.websiteName + '.',
websiteLanguage: 'English'
}

var output;

return {

name: function() {
return DEFAULTS.websiteName;
},
url: function() {
return DEFAULTS.websiteUrl;
},
copyright : function() {
return DEFAULTS.websiteCopyright;
}

}
}();
  1. 所以我希望能够像这样一个接一个地调用我的方法;

    document.write(  app.websiteName().websiteUrl()  );

    我知道在这个例子中使用没有意义,因为没有人打印他们的 网站名称后跟网址,但这只是一个示例...

  2. 此外,在我的 DEFAULTS 对象中,我尝试引用实际的 websiteName 作为 websiteCopyright 的值...但我收到一条错误消息websiteName 未定义,也尝试过 this.websiteName 以及 DEFAULTS.websiteName,但没有一个真正起作用!

希望这对我想要实现的目标有意义预先感谢:)

最佳答案

无论如何,您都将功能封装在模块模式中,这些默认值可能只是私有(private)变量,此时您可以直接引用其他变量

var app = function() {

var name = 'Stylish App';
var url = 'http://stylishapp.ltd';
var copyright = 'Copyright ' + new Date().getFullYear() + ' ' + name + '.';
var language = 'English'

return {

name: function() {
return name;
},
url: function() {
return url;
},
copyright : function() {
return copyright;
}

}
}();

document.write(app.name());
document.write("<br>");
document.write(app.url());
document.write("<br>");
document.write(app.copyright());

至于另一个问题,关于这种语法

document.write(  app.websiteName().websiteUrl()  );

这通常被称为 "fluent" interface (您将其称为 dot-notation ,这是错误的),其中每个方法调用都会返回 this ,以便可以链接下一个方法。

作为上面代码的复杂示例:

var app = function() {

var name = 'Stylish App';
var url = 'http://stylishapp.ltd';
var copyright = 'Copyright ' + new Date().getFullYear() + ' ' + name + '.';
var language = 'English'

return {

writeName: function() {
document.write(name + "<br>");
return this;
},
writeUrl: function() {
document.write(url + "<br>");
return this;
},
writeCopyright : function() {
document.write(copyright + "<br>");
return this;
}

}
}();

app.writeName().writeCopyright();

关于javascript - 如何将此对象转换为点表示法?,这样我就可以在一行上调用多个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com