(亚洲博彩十大网站排名) 加班加到头晕了,为什么this拿不到私有属性了?

(亚洲博彩十大网站排名)

/** * 测试return */
var obj = function{ var name = "William"; return { getName : function{ console.infothis.name; } }
}; obj.getName;
  • 如代码所示,我就想把name封装起来,向外提供getName公共方法,但输出的时候提示undefined

  • 2月24日提问
  • 评论
  • 邀请回答
  • 编辑

我记得你之前问过一个相似内容的问题……
那个啥,我建议你先去补补基础知识,不要想当然的编程……

js的私有变量不是这样的,你得这样

var obj = function{ var name = "William"; return { getName : function{ console.infoname; } }
}; obj.getName;

  • 2月24日回答
  • 2 评论
  • 编辑

var obj = function { var name = "William"; return { getName: function { console.infothis.name; } }
};
//这样只是形成了一个闭包,但返回的对象没有name属性
//通过console.logobj也可以看出obj是没有name属性的
//改成
var obj = function { var name = "William"; return { name: name, getName: function { console.infothis.name; } }
};
obj.getName;
//但我猜你其实是要一个私有变量,解决方法见上面。

  • 2月24日回答 · 2月24日更新
  • 评论
  • 编辑

这里你需要区分两个东西,一个是变量的作用域,一个是函数的上下文。变量的作用域在定义的时候就已经确定了,而函数的上下文也就是 this的指向在运行的时候才能够确定。 你这里把两者混为一谈了。也就是说this在运行时指向 obj对象,而obj对象并没有name属性

  • 2月24日回答
  • 评论
  • 编辑

额。。。。。name是变量不是属性

obj = function{ var name = "william"; obj = { getName:function {return name;} setName;functionnewName { name = newName;} } return obj;
};
obj.getName; //"wiliam"

  • 2月24日回答 · 2月24日更新
  • 评论
  • 编辑

对 你加班确实加太久了

  • 2月25日回答
  • 评论
  • 编辑

发表评论

电子邮件地址不会被公开。 必填项已用*标注