我正在学习更好的JavaScript的学习过程。现在,我正在尝试创建一个对象,仅用于处理字符串。只是为了学习的乐趣。
我试图以正确的方式或首选方式进行谷歌搜索,但似乎无法找到关于如何启动对象的良好,可靠的教程。
我尝试了类似的东西:
(function(StringHelper, undefined) {
'use strict';
StringHelper.isString = function() {
// Do stuff
};
StringHelper.toLowercase = function() {
// Do stuff
};
StringHelper.toUppercase = function() {
// Do stuff
};
}());
}(window.StringHelper = window.StringHelper || {}));
();
我从https://codepen.io/grav-sebastian/pen/ZpvxYJ得到了这个,我不确定它的真正意义(这样做的方式),就像最后一部分window.StringHelper = window.StringHelper || do
是什么?
这是构建简单JavaScript的好方法吗?是否可以为其他人和我自己提供良好的可重用性?
感谢。
答案 0 :(得分:2)
你的问题很开放。没有规范的方法来实例化javaScript对象,就像在其他语言中一样,创建对象的唯一方法是创建构造函数。
基本上,您可以使用构造函数,使用new
keyword,也可以返回object literal。但是,即使这些是-AFAIK-在基本级别直接创建对象的两种方法,也有几种创建对象的策略,如factory functions和closures。许多策略依赖于创建空对象,然后装饰它们添加函数和属性。
虽然大多数标准浏览器和节点API都暴露了构造函数,但是有很多开发人员认为javaScript中的构造函数 - 并且隐含地,this
关键字 - 是邪恶的(只是google'javascript new harm') 。
关于你粘贴的代码,正如@Mayank所说,所有代码都是关于在window.StringHelper
尚未定义的情况下创建新对象,或者为它定义一些函数(如果它尚不存在)。然而,它是相当复杂的,并不是处理对象创建的最直接的方法。
因此,创建对象的标准构造方法是:
var Dancer = function(name){
this.name = name;
}
Dancer.prototype.greet = function(){
return 'Hi! I\'m ' + this.name;
}
通过关闭 - 允许隐私 - 来实现这一目标的方法是:
function createDancer(name){
var module = {};
module.greet = function(){
return 'Hi! I\'m ' + name;
};
return module;
}
但是,javaScript中有很多处理对象创建的策略,每个人都有自己的优势和注意事项。
This video解释了一个简单而强大的模式来创建对象并重用它们,避免了javaScript中new
和this
关键字的常见缺陷。
有关javaScript中对象创建的其他有趣资源是stampit framework。
答案 1 :(得分:0)
window.StringHelper = window.StringHelper || {}用作命名空间,这意味着如果已经声明了window.StringHelper,那么它将不会重新声明(|| {}部分),否则它会将window.StringHelper(window.StringHelper || part)声明为命名空间。
为了更好地学习,javascript this是一个很好的资源。