4

我对javascript有点陌生,我开始做一些我坚持一些基础知识的事情,事情是我试图为一个对象创建一个原型,然后在数组中创建对象的引用,然后访问他们的方法,但我我在某个地方错了,谁能帮我解决这个问题,我在做什么显示在这里:-

function Obj(n){
    var name=n;
}
Obj.prototype.disp = function(){
    alert(this.name);
};
var l1=new Obj("one");
var l2=new Obj("two");
var lessons=[l1,l2];
//lessons[0].disp();
//alert(lessons[0].name);

但这些方法似乎都没有奏效...... :(

4

3 回答 3

6

您没有分配Obj对象的属性,而只是在构造函数中有一个局部变量。像这样改变:

function Obj(n){
    this.name = n;
}

示例小提琴

于 2013-07-29T13:55:19.247 回答
6

您的问题在于构造函数,您将参数分配给局部变量而不是字段变量,将其更改为:

function Obj(n){
    this.name=n;
}

希望这可以帮助

于 2013-07-29T13:55:26.280 回答
1

用这个:

 function Obj(n){
        this.name=n;
    }

原因:

var name=n;和之间的区别this.name=n;

变量名称=n;

声明的变量var是构造函数的局部变量。如果在对象内部的某些方法中使用它,它只会在构造函数调用之后继续存在

这个.name=n;

这是对象的属性,只要对象存在,它就会一直存在,无论它是否被使用。

示例:this在 JavaScript 中

于 2013-07-29T14:10:24.550 回答