[英]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.