1
問題: 呼叫(console.log(d.yakinlik.uzak.X1())
)這個函數調用對象方法給出了 「遺漏的類型錯誤:不是一個函數」 錯誤
function Div(isim) {
this.loc = document.getElementById(isim);
this.getStyle = function (stili) {
return window.getComputedStyle(this.loc).getPropertyValue(stili);
};
this.getIntStyle = function (stili) {
return parseInt(this.getStyle(stili), 10);
};
this.yakinlik = {
uzak: {
X1: function() {
return this.getIntStyle('left');
}
}
};
}
給
Uncaught TypeError: this.getIntStyle is not a function
我已經嘗試使用:
this.yakinlik = {
uzak: {
},
orta: {
},
yakin: {
},
cokyakin: {
}
};
this.yakinlik.uzak.X1 = function() { return this.getIntStyle('left'); };
但它也失敗了。但是當我不使用這種方法this.yakinlik.uzak.X1 = function() { return this.getIntStyle('left'); };
像這樣this.yakinlik.uzak.X1 = this.getIntStyle('left');
它工作(實際上它給NaN,但它是正常的,因爲它沒有重新計算,所以我必須在那裏使用一種方法)。
這裏是代碼的參與件:不必有使用屬性
'use strict';
function Div(isim) {
this.loc = document.getElementById(isim);
this.getStyle = function (stili) {
return window.getComputedStyle(this.loc).getPropertyValue(stili);
};
this.getIntStyle = function (stili) {
return parseInt(this.getStyle(stili), 10);
};
this.yakinlik = {
uzak: {
},
orta: {
},
yakin: {
},
cokyakin: {
}
};
this.yakinlik.uzak.X1 = function() { return this.getIntStyle('left'); };
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var d = new Div("d");
d.loc.style.left = getRandomInt(0, window.innerWidth - 50) + "px";
d.loc.style.top = getRandomInt(0, window.innerHeight - 50) + "px";
console.log(d.yakinlik.uzak.X1() + " " + d.getIntStyle('top'));
我該如何解決這個問題?
謝謝。
但是,爲什麼它的工作原理,當我使用屬性,而不是有一個方法與'this' – MindlessRanger
@MindlessRanger對不起沒有給你 –
使用'this.getIntStyle('left');'在X1下不會給出錯誤。 – MindlessRanger