我想在原型链上创建一个设置对象,用作我的应用程序的查找。我已经试过了:

http://jsfiddle.net/7kwXd/3/

var d9l = {};

d9l.aMethod = function() {
    //fails here with Cannot read property 'dimension1' of undefined
    alert(this.anObject.dimension1);
};

d9l.aMethod.prototype.anObject = {
   dimension1 : "x1",
   dimension2 : "y1"
};

var testing = d9l.aMethod();


但是我只是无法在构造函数中读取未定义的属性“ dimension1”。是否可以将原型定义为对象?

最佳答案

因为d9l不是构造对象,所以它的方法没有像您期望的那样引用this。要验证,请尝试alert(this)并查看得到的内容。

要解决此问题,请执行以下操作:

function d9l() {}
d9l.prototype.aMethod = function() {
    alert(this.anObject.dimension1);
};
d9l.prototype.anObject = {
    dimension1: "x1",
    dimension2: "y1"
};
var testing = (new d9l()).aMethod();

09-27 16:53