为什么我不能在javascript中访问这个变量?
问题描述:
我创建了一个对象,我想访问该对象中的变量。但是每次我运行这个,testThis和whatThis变量都是未定义的。我不知道为什么会发生这种情况。为什么我不能在javascript中访问这个变量?
/* HTML above */
<script type="text/javascript">
var formData;
var dataClickTest;
var FormRowData = function() {
var self = this;
self.someValue = "I am visible. Look Here!";
self.frds = new Array();
self.addRowData = function (ctrlData) {
self.frds.push(ctrlData);
}
self.convertData = function (rowData) {
var hi = rowData[0].attr('data-ctrltypeid');
var hello = "hi";
}
}
function postBackPart(div_id) {
formData = $('#' + div_id).find('input, select').filter('[name*=".InputtedData"]');
var testThis = FormRowData(); /* error here */
var whatThis = testThis.someValue; /* error here */
$.ajax({
url: '/TestEdit/Sections',
type: 'POST',
data: formData,
success: function (result) {
}
});
return false;
}
</script>
</body>
</html>
答
FormRowData
没有return
声明,并且您没有用new
关键字调用它,将其视为构造函数,因此它返回undefined
。
它看起来像你想让它作为一个构造函数这样:
var testThis = new FormRowData();
应该可以解决这两个问题。
答
变种testThis = 新 FormRowData();
答
既然你不实际使用的原型,你可以跳过new
完全:
var FormRowData = function() {
var self = {};
self.someValue = "I am visible. Look Here!";
self.frds = new Array();
self.addRowData = function (ctrlData) {
self.frds.push(ctrlData);
}
self.convertData = function (rowData) {
var hi = rowData[0].attr('data-ctrltypeid');
var hello = "hi";
}
return self;
}
相当于你的代码,而无需new