Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用纯javascript正确构造对象?_Javascript_Oop_Object - Fatal编程技术网

如何使用纯javascript正确构造对象?

如何使用纯javascript正确构造对象?,javascript,oop,object,Javascript,Oop,Object,我正在学习更好的JavaScript。现在,我正在尝试制作一个对象,用于处理字符串。只是为了学习的乐趣 我试着在谷歌上搜索正确的方法,或者更喜欢的方法,但是似乎找不到一个关于如何启动对象的好的、可靠的教程 我试过类似的方法: (function(StringHelper, undefined) { 'use strict'; StringHelper.isString = function() { // Do stuff }; StringHe

我正在学习更好的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 || {}));

();
我从中得到了这一点,我不确定它的真正含义(操作方式),比如最后一部分
window.StringHelper=window.StringHelper | | do

这是构造简单JavaScript的好方法吗?它是否以一种良好的方式为他人和我自己重复使用


谢谢

window.StringHelper=window.StringHelper | |{}用作名称空间,这意味着如果window.StringHelper已经声明,那么它将不会重新声明(部分|{}),否则它将声明window.StringHelper(window.StringHelper | |部分)作为名称空间


为了更好地学习javascript,这是一个很好的资源。

您的问题非常开放。没有一种规范的方法来实例化javaScript对象,就像在其他语言中,创建对象的唯一方法是创建构造函数一样

本质上,您可以使用构造函数、使用或返回。然而,即使这些是在基本层次上直接创建对象的仅有两种方法,也有几种创建对象的策略,如和。许多策略依赖于只创建空对象,然后添加函数和属性来装饰它们

虽然大多数标准浏览器和节点API都公开了构造函数,但有很多开发人员认为javaScript中的构造函数——以及隐含的
this
关键字——是邪恶的(只是谷歌的“javaScript新有害”)

关于您粘贴的代码,正如@Mayank所说,所有这些代码都是关于在case
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中确实有很多处理对象创建的策略,每个人都有自己的优点和注意事项

解释了一个简单但功能强大的模式来创建对象并重用它们,避免了javaScript中
new
this
关键字的常见陷阱


关于javaScript中对象创建的另一个有趣资源是。

这甚至不是有效的javaScript。倒数第二行有一个意外的
}
字符…谢谢你的回答。好的,这很有道理。这种书写对象的方式是一种好方法吗?上衣是干什么的?“(函数(StringHelper,未定义){”?在原始代码的底部还有一个$和JQuery,我想这是为了JQuery支持?