簡體   English   中英

在JavaScript對象中設置要使用的運算符的屬性

[英]Setting Properties in JavaScript Object Which Operator to Use

當給對象中的屬性賦值時,我對= vs.感到困惑

現在,我知道有兩種創建對象的方法:

  • 對象文字
  • 對象構造器

對於對象Literal,您將使用“:”為屬性分配值:

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;

我假設我有此權利,因為我想通過導出公開createBrowserPage。 我不會使用createBrowserPage:並使用“:”而不是“ =”將那個匿名函數分配給createBrowserPage屬性,對嗎?

=用於在Javascript語句中進行賦值,如下所示:

variable = "foo";

:用於屬性name: value之間的對象文字聲明,如:

var obj = {
    prop1: value1,
    prop2: value2
};

如果要通過導出公開createBrowserPage()函數,則有幾種選擇,其中有些涉及創建對象,而有些涉及為對象分配屬性。 選擇哪種以及如何聲明將導致您使用:= 這取決於您選擇編寫公開createBrowserPage()的javascript代碼的方式。 那里沒有一個答案。 我將為您提供一些選擇。

如果要在一條語句中為出口對象分配一個新屬性,則可以使用=如下所示:

module.exports.myFunc1 = myLocalFunction1;

如果在一個語句中希望分配所有導出的函數,則可以分配一個對象,該對象分配了= ,但在對象的聲明中使用了: ,如下所示:

module.exports = {
    myFunc1: myLocalFunction1,
    myfunc2: myLocalFunction2
};

在第一個示例中,您要向exports對象添加一個新屬性,並為該屬性分配一個值。

在第二個示例中,您聲明一個新的Javascript文字對象(它使用prop: value語法聲明其屬性。然后,將整個對象分配給module.exports ,實際上將整個現有的exports對象替換為一個新的對象。並且此新對象具有兩個屬性。

您的問題有點令人困惑,但是如果您對:=的確切含義和語法感興趣,它就像這樣:

冒號( : )符號不是一個操作符,它是的一部分litteral對象符號的語法和從它們的 (任意表達式)分隔的屬性名稱 (一個litteral字符串或簡單的標識符)。 冒號僅在該上下文中使用,並且作為三進制條件運算符( ?: :)的一部分。

當且僅當{不是指令中的第一個字符(否則它定義了一個塊)並且不跟隨function表達式或聲明時,方括號中的內容才被解析為垃圾對象。

賦值運算符( =spec )是二進制運算符,可以在任何表達式中使用,只要其左操作數是有效的左側表達式,並且它返回右操作數的值即可。 除非使用嚴格模式,否則它將無提示地將值分配給只讀屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM