我在这里打破了我的头脑.我有这个简单的代码:
function myFunc()
{
this.a = "aaa";
return {
h: function ()
{
alert(this.a);
}
}
}
var f = new myFunc();
console.log(f.h.apply(f)) //I'm expecting to see here : "aaa" but it says "undefined"
Run Code Online (Sandbox Code Playgroud)
f.h看起来完全像这样:
function ()
{
alert(this.a);
}
Run Code Online (Sandbox Code Playgroud)
所以,我正在尝试将上下文设置为f自身(包含aprop)apply.
但它不起作用.
我错过了什么?
ps还有其他选择.我知道.但为什么我的具体代码不起作用?
f 不包含a,因为你返回一个任意对象'覆盖'否则将被返回的默认对象,并且包含一个.
如果你用过
function myFunc() {
return {
a:"aaa",
h:function() { alert this.a; }
}
}
Run Code Online (Sandbox Code Playgroud)
那会有用!
如果你想使用'私有'和'公共'变量,那么就这样做
function myFunc() {
var a = "aaa";
return {
h:function() { alert a; }
}
}
Run Code Online (Sandbox Code Playgroud)
如果要使用闭包,请创建a为局部变量.这将成为a外部世界无法直接访问的私有财产
function myFunc(){
var a = "aaa";
return {
h: function () {
alert(a);
}
}
}
var f = new myFunc();
console.log(f.h(f))
Run Code Online (Sandbox Code Playgroud)
演示:小提琴
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |