js:方法无法访问属性
问题描述:
下面是JavaScript中令我困惑的一件事:在下面的代码中,我有一个包含一个属性的对象构造函数。在它下面,我添加了一些原型方法。方法'method1'能够很好地访问'this.property',并返回值30.方法'combine'只是调用'method1',但它返回NaN。似乎'this.property'是公开的第一个电话,但不是第二个。为什么这个奇怪的行为js:方法无法访问属性
var ObjBuilder = function()
{
this.property = 3;
};
ObjBuilder.prototype = function()
{
var method1 = function()
{
return this.property * 10;
}
var combine = function()
{
return method1() + 2;
}
return {method1: method1,
combine: combine};
}();
// instantiate an object and call its methods
var obj = new ObjBuilder();
console.log(obj.method1());//prints 30
console.log(obj.combine());//prints NaN. WHY???
答
我觉得你的问题是,combine
简单地调用method1
功能(不this.method1
,例如),所以this
中的method1
该呼叫this.property * 10
像您期望的不绑定,并可能绑定到全局对象。
如果你在'method1'里面记录'this',然后在'combine'里面调用它,你会看到问题 – Li357
@ t.niese [它看起来不像它](https://jsfiddle.net/3ovc6Lye /) - '窗口'。你必须把它称为'this.method1()'来给出'this'上下文。 – Li357