JavaScript中的对象属性不起作用
我尝试在JavaScript中实现对象扩展,但我不明白为什么这段代码不起作用:JavaScript中的对象属性不起作用,javascript,Javascript,我尝试在JavaScript中实现对象扩展,但我不明白为什么这段代码不起作用: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Question 027</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Question 027</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<button onclick="retrievingAddressData()">getting address data</button> <br />
<p id="objectData">Object Data here</p>
<script>
const Customer = function (firstName, lastName,address) {
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
function Address() {
return this.address;
}
}
Customer.prototype = {
parseAddress: function (data) {
//this.address = data.address;
this.address = data;
}
};
Customer.prototype.loadAddress = function () {
var customer = this;
$.get('data.xml', function (data) {
//customer.parseAddress(data);
customer.parseAddress($(data).find('address').text());
})
.done(function (data) {
//customer.parseAddress($(data).find('address').text());
console.log('all rigth!');
})
.fail(function () { console.log('error:') })
.always(function () { console.log('finished') });
}
//
function retrievingAddressData() {
const objCustomer = new Customer("Luz", "Tellez","Madrid");
var respuesta = document.getElementById("objectData");
respuesta.innerHTML = "*** Customer:firstname: "
+ objCustomer.firstName + " lastname:" + objCustomer.lastName;
objCustomer.loadAddress();
console.log(objCustomer.Address);
respuesta.innerHTML += " address:" + objCustomer.Address;
}
</script>
</body>
</html>
问题027
获取地址数据
此处的对象数据
const Customer=函数(名字、姓氏、地址){
this.firstName=firstName;
this.lastName=lastName;
this.address=地址;
函数地址(){
返回此地址;
}
}
Customer.prototype={
解析地址:函数(数据){
//this.address=data.address;
this.address=数据;
}
};
Customer.prototype.loadAddress=函数(){
var客户=此;
$.get('data.xml',函数(数据){
//客户地址(数据);
customer.parseAddress($(数据).find('address').text());
})
.完成(功能(数据){
//customer.parseAddress($(数据).find('address').text());
console.log('all right!');
})
.fail(函数(){console.log('error:')})
.always(函数(){console.log('finished')});
}
//
函数retrievingAddressData(){
const objCustomer=新客户(“Luz”、“Tellez”、“Madrid”);
var respuesta=document.getElementById(“objectData”);
respuesta.innerHTML=“***客户:名字:”
+objCustomer.firstName+“lastname:”+objCustomer.lastname;
objCustomer.loadAddress();
console.log(objCustomer.Address);
respuesta.innerHTML+=“地址:”+objCustomer.address;
}
xml文件的内容总结如下:data.xml
<Customer>
<address>Madrid</address>
</Customer>
马德里
当我恢复Xml数据并使用扩展原型方法更新对象时,该值不是udpated,当我在代码末尾恢复地址值时,这是:“undefine”
为什么?忘记加载它的所有额外内容-您的对象甚至不公开名为
Address
(大写字母“a”)的方法:
const Customer=函数(名字、姓氏、地址){
this.firstName=firstName;
this.lastName=lastName;
this.address=地址;
函数地址(){
返回此地址;
}
}
var cust=新客户(“测试”、“测试”、“我的地址”);
console.log(cust.Address());
控制台日志(客户地址)
您从未在客户
实例或原型上设置名为地址
的属性。为什么您希望这样一个属性存在?我明白了,但是当我从xml文件中加载带有$.get()的数据时,address的值为空,我不知道为什么?请尝试我的代码,将其放在方法address中,您可以看到我对它的看法@Luzhannethtellez加载地址的代码是异步的,您需要等待它完成加载,然后再尝试显示它-搜索如何等待异步操作完成关于它的问题有数千个:我必须找到“在ajax javascript中显示数据后,如何等待异步数据更新的答案”?您是否建议我找到它?但是,为什么不显示在构造创建中传递的地址值?它是空的(空白)应该是“Madrid”!@Luzhannethtellez