如何在以下情况下传递对象属性:
ObjectTest = function()
{
this.var1= "3";
this.var2= "";
}
和电话
ObjectTest .prototype.allFriends = function() {
function bindEvents() {
//pass var1 here
}
}
有没有办法传递ObjectTest属性而不将它们作为bindEvents()的属性传递。如果可能的话,我更喜欢全球解决方案
答案 0 :(得分:2)
ObjectTest.prototype.allFriends = function() {
do_smth_with(this.var1);
}
请注意,您通过调用ObjectTest
创建了新的new ObjectTest()
;没有new
关键字,它将无效。
编辑它仍然工作,因为内部函数将继承外部函数(allFriends
)scope:
ObjectTest .prototype.allFriends = function() {
function bindEvents() {
console.log(this.var1);
}
}
如果仍然不适合您,请使用对父this
的引用:
ObjectTest .prototype.allFriends = function() {
var parent = this;
function bindEvents() {
console.log(parent.var1);
}
}
答案 1 :(得分:2)
您在构造函数中使用的allFriends原型中使用相同的代码:
ObjectTest = function()
{
this.var1= "3";
this.var2= "";
}
ObjectTest.prototype.allFriends = function() {
alert(this.var1);
}
答案 2 :(得分:2)
它是一样的:this.var1 - 运行这个:
ObjectTest = function() {
this.var1 = 3;
this.var2 = "";
};
ObjectTest.prototype.allFriends = function() {
alert(this.var1);
};
x = new ObjectTest();
x.allFriends();
或者看到这个小提琴:http://jsfiddle.net/9XYZU/