1
我目前正在學習如何在Javascript中實現二叉搜索樹。我遇到了一個錯誤「無法讀取空值」屬性'數據',我可以修復,但我仍然不明白爲什麼它給出了這個錯誤。無法使用對象讀取null屬性'data'
這裏是我的代碼的簡化版本:
var test = function(){
this.a = null;
this.constr = function(val){
this.data = val;
this.left = null;
return this;
};
this.create = function(num){
var b = this.a;
if(b === null)
//this.a = new this.constr(num);
b = new this.constr(num);
else
b.left = new this.constr(num);
};
};
var c = new test();
c.create(5);
c.create(20);
console.log(c.a.data);
console.log(c.a.left);
,我在第14行評論的代碼:this.a =新this.constr(NUM);工作正常,但下面的它給出了描述的錯誤。這是爲什麼?爲什麼可以分配b.left但不是b本身?是不是b和this.a引用同一個對象?當你將this.a
到b
它擁有分配this.a
的null
參考
分配給'b'不會分配給'this.a'。變量永遠不會是對屬性的引用(除非您使用'with')。是的,當*'b'和'this.a'引用同一個對象時,*改變該對象的屬性*並沒有什麼區別。但是'b'在你建立的條件下保存了'null'的值。 – Bergi
@Bergi謝謝你的回覆我發現你的回答真的很有用,並讓我意識到我在做什麼。 – Vektor