使用new
关键字创建对象时,除了传入调用上下文(this
)之外,是否有任何方法可以访问创建它的范围中的变量。 / p>
例如,如果我有:
var parent = function() {
this.parent_property = "Property set on parent object";
this.kid = new child();
};
var child = function() {
this.childMethod = function(){
//how to return parent property
}
};
var test = new parent();
console.log(test.kid.childMethod());
如何从parent_property
访问childMethod
?我能看到的唯一解决方案是将this
传递给child
的构造函数,如下所示:
var parent = function() {
this.parent_property = "Property set on parent object";
this.kid = new child(this);
};
var child = function(parent) {
var parent = parent;
this.childMethod = function(){
return parent.parent_property;
//how to return parent property
}
};
var test = new parent();
console.log(test.kid.childMethod());
还有其他方法吗?这样做有没有下行/陷阱?
答案 0 :(得分:1)
在以下代码中,没有父级或子级:
html body div ul li a { }
这只是一个构造函数,你可以从另一个构造函数调用,但是那里没有inheritance,到目前为止,没有实例。
您当前的方法没有任何问题,但您可能对JavaScript中的prototypal inheritance有不正确的理解
这是MDN的例子
var Child = function() {
this.childMethod = function(){
// how to return parent property
}
};
您向function Person(first, last, age, gender, interests) {
this.name = {
first,
last
};
this.age = age;
this.gender = gender;
this.interests = interests;
};
Person.prototype.greeting = function() {
alert('Hi! I\'m ' + this.name.first + '.');
};
构造函数的原型添加方法,以便Person的每个实例都会立即继承Person
方法。