[英]How can object properties 'talk' to each other without a method?
我知道,一旦一個函數被調用的背景下, this
改變的對象,但我怎么可以模擬這種情況下,而無需創建一個方法?
var object = {
x: 1,
y: object.x, // will NOT work
z: function () {
return this.x // works fine
}
}
console.log(object.z())
問題是創建y
時, object
尚不存在。 它仍在創建中。 當您實際調用object.z()
,該對象已經創建並且可以工作。
編輯:您可以做這樣的事情,為對象創建一個構造函數:
function getObject(){ this.x=1; this.y=this.x; return this; } var object = getObject(); alert(object.y)
或者,如果您在編寫代碼時知道該值是什么,請執行以下操作:
var object = { x: 1, y: 1, } alert(object.y)
首先創建變量。 如果您在創建對象時知道x應該是什么,而不是在編寫代碼時就知道了,這可能就是您想要的。
var one=1; var object = { x: one, y: one, } alert(object.y);
所有這些將把1放入y。
您也可以嘗試一下。 如果兩個值相同,為什么需要兩個? (也許他們會獨立改變嗎?我不知道會在哪里發生,但是有可能)
var object={ x: 1 } alert(object.x);
我不確定您要問什么,但讓我介紹一下getter函數。 喜歡
var object = {
x: 1,
get y() {
return this.x;
},
z: function () {
return this.x // works fine
}
}
console.log(object.y); // 1
這樣的方法仍然是一個函數,但其行為類似於屬性。 也許這會對您有任何幫助。 話雖這么說,但是Java語言中沒有方法,或更確切地說,沒有語法可以以提議的方式訪問對象屬性。
簡短的回答是“你不能。” 您有幾種選擇。 第一種是預先存儲您希望使用的任何值(為簡便起見,在這些示例中我省略了z
):
var x = 1;
var object = {
x: x,
y: x,
};
第二種是等待對象構造之后(這是我通常要做的),然后分配屬性,因為對象是可變的:
var object = {
x: 1
};
object.y = object.x;
第三是創建對象構造函數並在其中進行分配:
function MyObject() {
this.x = 1;
this.y = this.x;
}
var object = new MyObject();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.