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

我尝试在JavaScript中实现对象扩展,但我不明白为什么这段代码不起作用:

<!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