Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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_Node.js - Fatal编程技术网

在JavaScript对象中设置要使用的运算符的属性

在JavaScript对象中设置要使用的运算符的属性,javascript,node.js,Javascript,Node.js,当给对象中的属性赋值时,我被=vs.:弄糊涂了 现在我知道有几种方法可以创建对象: 对象字面量 对象构造函数 对于对象文字,您将使用:为属性赋值: var myObject={firstName:John,lastName=Smith} 我们使用:设置属性的值 我也知道函数本身就是一个对象。您可能可以从那里公开公共属性,作为作为作为对象的函数的一部分 那么,如果将函数分配给要使用的属性=?我现在还在假设,但是像这样的事情呢: var phantom = require('phantom');

当给对象中的属性赋值时,我被=vs.:弄糊涂了

现在我知道有几种方法可以创建对象:

对象字面量 对象构造函数 对于对象文字,您将使用:为属性赋值:

var myObject={firstName:John,lastName=Smith}

我们使用:设置属性的值

我也知道函数本身就是一个对象。您可能可以从那里公开公共属性,作为作为作为对象的函数的一部分

那么,如果将函数分配给要使用的属性=?我现在还在假设,但是像这样的事情呢:

var phantom = require('phantom');

var World = function World(callback) {

    phantom.create("--web-security=no", "--ignore-ssl-errors=yes", { port: 12345 }, function (ph) {
        var phantomProcess = ph;

        createBrowserPage = function(){
            phantomProcess.createPage(function(page) {

                this.headlessPage = page;
            })
        };
    });

    callback();
};

module.exports.World = World;
module.exports.myFunc1 = myLocalFunction1;
module.exports = {
    myFunc1: myLocalFunction1,
    myfunc2: myLocalFunction2
};
我假设我有这个权利,因为我想通过导出公开createBrowserPage。我不会使用createBrowserPage:并使用:而不是=将匿名函数分配给createBrowserPage属性权限?

=用于Javascript语句中的分配,如中所示:

variable = "foo";
:在属性名称:值之间的对象文字声明中使用,如:

如果要通过导出公开createBrowserPage函数,可以使用几个选项,其中一些涉及创建对象,另一些涉及为对象指定属性。选择哪一个以及如何声明它将决定是否使用:或=。这取决于您选择以何种方式编写公开createBrowserPage的javascript代码。这里没有单一的答案。我会给你几个选择

如果在一条语句中,您希望为exports对象指定一个新属性,则可以使用=如下所示:

var phantom = require('phantom');

var World = function World(callback) {

    phantom.create("--web-security=no", "--ignore-ssl-errors=yes", { port: 12345 }, function (ph) {
        var phantomProcess = ph;

        createBrowserPage = function(){
            phantomProcess.createPage(function(page) {

                this.headlessPage = page;
            })
        };
    });

    callback();
};

module.exports.World = World;
module.exports.myFunc1 = myLocalFunction1;
module.exports = {
    myFunc1: myLocalFunction1,
    myfunc2: myLocalFunction2
};
如果在一条语句中,您希望分配所有导出的函数,那么您将分配一个对象,该对象被分配为=,但在对象声明中使用:,如下所示:

var phantom = require('phantom');

var World = function World(callback) {

    phantom.create("--web-security=no", "--ignore-ssl-errors=yes", { port: 12345 }, function (ph) {
        var phantomProcess = ph;

        createBrowserPage = function(){
            phantomProcess.createPage(function(page) {

                this.headlessPage = page;
            })
        };
    });

    callback();
};

module.exports.World = World;
module.exports.myFunc1 = myLocalFunction1;
module.exports = {
    myFunc1: myLocalFunction1,
    myfunc2: myLocalFunction2
};
在第一个示例中,将向exports对象添加一个新特性,并为该特性指定一个值


在第二个示例中,您正在声明一个新的Javascript文本对象,该对象使用prop:value语法声明其属性。然后,您将整个对象分配给module.exports,它实际上用一个新对象替换了整个现有的exports对象,并且这个新对象有两个属性。

您的问题有点让人困惑,但是如果您对:And=的确切含义和语法感兴趣,它是这样的:

var phantom = require('phantom');

var World = function World(callback) {

    phantom.create("--web-security=no", "--ignore-ssl-errors=yes", { port: 12345 }, function (ph) {
        var phantomProcess = ph;

        createBrowserPage = function(){
            phantomProcess.createPage(function(page) {

                this.headlessPage = page;
            })
        };
    });

    callback();
};

module.exports.World = World;
module.exports.myFunc1 = myLocalFunction1;
module.exports = {
    myFunc1: myLocalFunction1,
    myfunc2: myLocalFunction2
};
冒号:符号不是运算符,它是语法的一部分,它将属性名、一个普通字符串或简单标识符与其任何表达式的值分开。冒号仅在该上下文中使用,并作为三元条件运算符的一部分?:

当且仅当{不是指令中的第一个字符,否则它定义了一个块,并且不遵循函数表达式或声明时,方括号中的某个对象被解析为literal对象


赋值运算符=是一个二元运算符,它可以在任何表达式中使用,只要其左操作数是有效的左侧表达式,并且返回右操作数的值。除非使用严格模式,否则它将自动无法为只读属性赋值。

是否也可以执行module.exports={myFunc1:function{…code here},myFunc2:函数{…code here};并在对象文本中分配匿名函数?我假设答案是。还有第三个选项。假设您对exports对象执行了module.exports.myFunc1=someOtherVariable,其中myFunc1是一个-existing-方法,在这里您将覆盖该方法并使用someOtherVariable覆盖该方法。换句话说您可以使用=too right?@WeDoTDD-yes更新/覆盖-existing-properties或methods,=也将替换以前存在的值,并且yes函数可以是内联匿名函数,而不是对命名函数的引用。在Javascript中,函数引用可以是命名函数或内联匿名函数。谢谢,另一个家伙给了我更多,回答得更清楚,但无论如何还是要感谢你的回答。在有严格和无严格的行为中,严格模式也是一个很好的观点。