我有一個js對象這樣的訪問「這個」從一個物體:如何在一個對象
let service = function() {
this.a = 100;
}
service.prototype.func = function() {
console.log(this.a)
}
service.prototype.func2 = function() {
console.log('func2')
this.func();
}
service.prototype.obj = {
m: {
n: {
o: function() {
this.func2();
},
p: service.prototype.func2.bind(service.prototype)
}
}
}
我要訪問的「a」從O或P,這裏是代碼:
let s = new service();
console.log(s.a)
s.func()
s.func2()
s.obj.m.n.p()
s.obj.m.n.o()
和輸出
100
100
func2
100
func2
undefined
test.js:20
this.func2();
^
TypeError: this.func2 is not a function
的任何想法,我怎麼能寫O/p正確像FUNC2執行?
s.obj.m.n.o.call(s)should work。我不認爲你可以用s.obj.m.n.p()做很多事情,因爲p正在返回一個函數。 – blessenm
Javascript對象沒有父對象的概念,因此除非您專門在自己的屬性中存儲父引用,否則您無法從子對象中訪問該對象。這部分是因爲子對象僅在父屬性中作爲引用存在,並且可以在許多對象中引用它。換句話說,一個孩子實際上並不是由任何特定的父母擁有的。它只是一個屬性的參考,可能是許多不同對象的參考。 – jfriend00