[英]Javascript access parent from child
當父母永遠不知道它擁有哪些孩子時,我正在嘗試一種子類訪問父類的方法。
我正在使用Object.create創建我的類,現在我正在這樣做。 注意子類“ obj.parent = parentClass”
必須有一種更好的方法來執行此操作,但我不知道。
var parentClass = (function() {
var obj = Object.create({});
var _parentProperty = 'foo';
Object.defineProperties(obj,
{
'parentProperty': {
configurable: false,
enumerable: true,
set: function(value) {
_parentProperty = value;
},
get: function() {
return _parentProperty;
}
},
'parentMethod': {
value: function() {
alert('Parent method called');
},
writable: false,
configurable: false,
enumerable: false
}
}
);
return obj;
})();
var childClass = (function() {
var obj = Object.create(parentClass);
obj.parent = parentClass;
var _childProperty = 'bar';
Object.defineProperties(obj,
{
'childProperty': {
configurable: false,
enumerable: true,
set: function(value) {
_childProperty = value;
},
get: function() {
return _childProperty;
}
},
'childMethod': {
value: function() {
alert('Child method called');
},
writable: false,
configurable: false,
enumerable: false
},
'callParent': {
value: function() {
alert(this.parent.parentProperty);
this.parent.parentMethod();
},
writable: false,
configurable: false,
enumerable: false
}
}
);
return obj;
});
var myClass = new childClass();
myClass.callParent();
<script>
var parentClass = (function() {
var obj = Object.create({});
var _parentProperty = 'foo';
return Object.defineProperties(obj,
{
'parentProperty': {
configurable: false,
enumerable: true,
set: function(value) {
_parentProperty = value;
},
get: function() {
return _parentProperty;
}
},
'parentMethod': {
value: function() {
alert('Parent method called');
},
writable: false,
configurable: false,
enumerable: false
}
}
);
})();
var childClass = (function() {
var obj = Object.create(parentClass);
obj.parent = parentClass
var _childProperty = 'bar';
return Object.defineProperties(obj,
{
'childProperty': {
configurable: false,
enumerable: true,
set: function(value) {
_childProperty = value;
},
get: function() {
return _childProperty;
}
},
'childMethod': {
value: function() {
alert('Child method called');
},
writable: false,
configurable: false,
enumerable: false
},
'callParent': {
value: function() {
alert(this.parent.parentProperty);
this.parent.parentMethod();
},
writable: false,
configurable: false,
enumerable: false
}
}
);
});
var myClass = new childClass();
myClass.callParent();
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.