JavaScript内部匿名函数无法访问成员?

菲尔

我正在尝试学习如何在JavaScript中使用匿名函数。因此,我创建了一个匿名函数,然后添加了内部函数tigerInner(),并在该函数中尝试访问外部作用域中的成员,但未定义错误。

var tiger = function(name, info) {    
    var name = name;//put this as private member
    this.behave = info;

    console.log("tiger: " + name + " " + behave);

    this.tigerInner = function(){
        console.log('name: ' + name);    
        console.log("tigerInner, behave: " + this.behave);//undefined error "this.behave"
    }
}

var test = tiger("tiger", "eating");
test.tigerInner();

樱桃DT

您的主要问题是:

  1. 您分配infothis.behave,然后使用behave代替infothis.behave更改behavethis.behave您所在console.log行中的。

  2. 您编写的代码像构造函数一样工作(假设一个新构造的对象为,this并且不返回任何内容),但您并未其称为构造函数。为此,您需要使用new关键字:var test = new tiger("tiger", "eating")


另外,您的行var name = name没有执行您想像的操作-它没有执行任何操作,因为name它已经像局部变量一样工作了,您只需将其分配给自己即可。因此,您可以删除该行。


这是我的建议,固定代码如下所示:

var tiger = function(name, info) {    
    this.behave = info;

    console.log("tiger: " + name + " " + this.behave);

    this.tigerInner = function(){
        console.log('name: ' + name);    
        console.log("tigerInner, behave: " + this.behave);
    }
}

var test = new tiger("tiger", "eating");
test.tigerInner();

一种不new使用该方法的替代方法,则需要使用并返回您自己创建的新对象-只是this按照其他答案中的建议返回就可以了,但是实际上将您behavetigerInner属性放入了全局对象,并在最后返回了全局对象本身(并且将在严格模式下崩溃)。new稀少的解决方案是这样的:

var tiger = function(name, info) {
    var obj = {};
    obj.behave = info;

    console.log("tiger: " + name + " " + obj.behave);

    obj.tigerInner = function(){
        console.log('name: ' + name);    
        console.log("tigerInner, behave: " + obj.behave);
    };
    return obj;
}

var test = tiger("tiger", "eating");
test.tigerInner();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法访问匿名函数

来自分类Dev

javascript函数无法访问对象的私有成员

来自分类Dev

无法访问联合体内的匿名结构的成员

来自分类Dev

无法访问函数内部的元素

来自分类Dev

无法访问成员函数中的类变量

来自分类Dev

内部函数更改后无法访问外部函数变量

来自分类Dev

JavaScript setTimeout无法访问函数变量

来自分类Dev

错误:无法访问成员

来自分类Dev

无法访问RaycasHit的成员

来自分类Dev

React:无法访问getDefaultProps内部的mixin函数

来自分类Dev

无法访问通过更改函数内部的locals()创建的变量

来自分类Dev

无法访问函数内部的地理位置

来自分类Dev

JavaScript私有内部方法可访问特定的匿名函数

来自分类Dev

无法访问对象内部的数据-新手Javascript问题

来自分类Dev

使成员函数成为朋友后也无法访问成员

来自分类Dev

TemplateBinding:成员<>无法识别或无法访问

来自分类Dev

无法识别或无法访问成员“背景”

来自分类Dev

TemplateBinding:成员<>无法识别或无法访问

来自分类Dev

成员“背景”无法识别或无法访问

来自分类Dev

成员“ BackGround”无法识别或无法访问

来自分类Dev

无法在函数内部访问 Javascript 全局对象

来自分类Dev

从自我执行的匿名成员函数内部访问父原型作用域

来自分类Dev

朋友功能-无法访问成员

来自分类Dev

无法访问类的向量成员

来自分类Dev

无法访问对象成员变量

来自分类Dev

朋友函数和名称空间。无法访问班级中的私人成员

来自分类Dev

无法访问游戏对象“必须调用对非静态成员函数的引用”

来自分类Dev

从好友函数内部的对象访问成员函数

来自分类Dev

无法访问的内部资源文件?

Related 相关文章

热门标签

归档