使用JavaScript,我试图从另一个类中的类访问属性。我获得了undefined
给定的访问权限。
主要示例代码:
//MainClass
function MainClass() {
this.childClass = new ChildClass();
}
//ChildClass
function ChildClass() {
this.prop1 = "A";
this.prop2 = "B";
}
ExampleWidget.js:
(function ($) {
$.widget("myWidget", {
_create: function () {
this.mainClass = new MainClass();
},
doSomething: function (){
this.mainClass.childClass.prop1 = "1";
this.mainClass.childClass.prop2 = "2";
alert(this.mainClass.childClass.prop1); // shows undefined
alert(this.mainClass.childClass.prop2); // shows undefined
}
});
}(jQuery));
如何更改和访问子类的属性?
答案 0 :(得分:2)
如何调用_create
和doSomething
?因为这是造成问题的原因。我的猜测是this
在调用_create
与doSomething
时有所不同。 _create
正在实例化并在一个对象上设置类,然后您的警报正在doSomething
中的完全不同的对象上查找道具。
进一步证明,在没有外部呼叫者的情况下,代码可以自行编写:
答案 1 :(得分:2)
我没有看到任何问题,但它仍然是你如何称呼doSomething方法。
以下是示例。
http://jsfiddle.net/jx5xr2m0/5/
你必须确保使用它来调用doSomething。
function MainClass() {
this.childClass = new ChildClass();
}
//ChildClass
function ChildClass() {
this.prop1 = "A";
this.prop2 = "B";
}
(function ($) {
$.widget("custom.myWidget", {
_create: function () {
this.mainClass = new MainClass();
alert('ok');
this.doSomething();
},
doSomething: function (){
this.mainClass.childClass.prop1 = "1";
this.mainClass.childClass.prop2 = "2";
alert(this.mainClass.childClass.prop1); // shows undefined
alert(this.mainClass.childClass.prop2); // shows undefined
}
});
}(jQuery));