Javascript从子级访问父级

Javascript从子级访问父级,javascript,oop,parent-child,Javascript,Oop,Parent Child,我试图找到一种方法,当父类永远不知道它有哪些子类时,子类访问父类 我正在使用Object.create创建我的类,现在我正在这样做。子类“obj.parent=parentClass”中的注释 一定有更好的办法,但我不知道 var parentClass = (function() { var obj = Object.create({}); var _parentProperty = 'foo'; Object.defineProperties(obj,

我试图找到一种方法,当父类永远不知道它有哪些子类时,子类访问父类

我正在使用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();
在父类和子类的both Object.defineProperties对象构造函数中使用返回关键字

var parentClass=(函数(){
var obj=Object.create({});
var_parentProperty='foo';
返回对象。定义属性(obj,
{
“parentProperty”:{
可配置:false,
可枚举:正确,
设置:函数(值){
_parentProperty=值;
},
get:function(){
返回父属性;
}
},
“父方法”:{
值:函数(){
警报('调用父方法');
},
可写:false,
可配置:false,
可枚举:false
}
}
);
})();
var childClass=(函数(){
var obj=Object.create(父类);
obj.parent=父类
var_childProperty='bar';
返回对象。定义属性(obj,
{
“儿童财产”:{
可配置:false,
可枚举:正确,
设置:函数(值){
_childProperty=值;
},
get:function(){
归还财产;
}
},
“儿童法”:{
值:函数(){
警报(“调用的子方法”);
},
可写:false,
可配置:false,
可枚举:false
},
“callParent”:{
值:函数(){
警报(this.parent.parentProperty);
this.parent.parentMethod();
},
可写:false,
可配置:false,
可枚举:false
}
}
);
});
var myClass=新的子类();
myClass.callParent();

,谢谢,这是一篇有趣的文章,我将从中尝试一些东西,但我没有使用John Resig的Javascript继承。我发现我可以替换
obj.parent=parentClass带有
obj.parent=obj.\uuuu proto\uuuu但这并不是真正有用的。我想在父类中写入一些东西,将父类设置为子类。@Thefour theye Good point。我现在想知道这是不是铬的东西。哦,是的。对不起,我忘了加那一行。现在更改为添加返回函数。
<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>