我正在嘗試做的是一個創建物件、附加其他物件并向其添加內容的類,而無需撰寫幾行
var obj = document.createElement('input');
obj.value = 'this value';
obj.appendChild(anotherObject)
這是代碼:
class gerarNode{
constructor(input){
this.nodetype = input;
this.node = document.createElement(input);
}
toAppend(appends){
this.node.appendChild(appends);
}
}
我對瀏覽器控制臺的期望:
var jorge = new gerarNode('div').toAppend(anotherNodeObject)
// Object {"nodetype": "div", etc, etc}
我得到了什么:
var jorge = new gerarNode('div').toAppend(anotherNodeObject)
// undefined
但最奇怪的是,如果我只呼叫建構式方法,它會像我想要的那樣回傳一個“div”物件,如果我呼叫類中的任何方法,它就不起作用
var jorge = new gerarNode('div')
// Object {"nodetype": "div"}
uj5u.com熱心網友回復:
如果不在return函式中執行陳述句,則回傳undefined.
為了實作一個流暢的介面,所有的修改函式都應該回傳this.
class gerarNode {
constructor(input) {
this.nodetype = input;
this.node = document.createElement(input);
}
toAppend(appends) {
this.node.appendChild(appends);
return this;
}
}
let anotherNodeObject = document.createElement("div");
var jorge = new gerarNode('div').toAppend(anotherNodeObject);
console.log(jorge);
uj5u.com熱心網友回復:
toAppend 沒有回傳值。您正在使用 toAppend 回傳的內容分配變數“jorge”-> 語意上沒有,未定義。toAppend 似乎是一個不應有回傳值的方法,但您希望它表現得像一個流暢的介面。在這種情況下,只需回傳“this”
toAppend(appends){
this.node.appendChild(appends);
return this;
}
當您只分配建構式時,您正在分配初始化的物件。這就是為什么當您只分配建構式時,您會獲得所謂的“怪異”。這并不奇怪,但在意料之中。
downvoter 還應該解釋我的答案中有什么不正確。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357861.html
標籤:javascript html
上一篇:即使在Cypress中嘗試將pdf檔案作為多部分FormDataPOST請求發送時,FormData物件也是空的
