javascript - 为什么我的上下文没有被共享?

标签 javascript

我以为我理解了 call 在 javascript 中的工作原理,但显然没有。

function bear(){
    var a = 1
    pig.call(this) 
}

function pig(){
    alert(a) //throws an error, 'a is not defined'
}

bear()

http://codepen.io/anon/pen/jEYGOv

为什么这不起作用?我怎样才能让它工作(不传递a作为变量)

最佳答案

你不能这么做。

function bear(){
  pig.call(this);
}

function pig(){
  this.a = 5; //same as window.a = 5 unless used as a constructor;
}
bear(); //window.a == 5;
a = new bear(); //this keyword is now referring to variable object a so a.a = 5;

此外,.call(this) 第一个参数之后的任何参数都将是您调用 call() 的函数的参数

关于javascript - 为什么我的上下文没有被共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446128/

相关文章:

javascript - 断言 "expect" Jest 调用了 X 次

javascript - 更新 PHP 变量

javascript - 删除小屏幕/移动设备上的输入占位符,但在调整到桌面大小时再次添加它们

javascript - 在 GWT 中捕获字体调整大小事件

javascript - 如何使模态图像在自动图像 slider 上工作?

javascript - 将参数传递给javascript中的原型(prototype)函数

c# - 如何通过 AJAX 使用自定义 AuthorizeAttribute

javascript - 如何使用 Protractor 在 e2e 测试中预期元素的动态计数

javascript - 如何仅使用 javascript 设置通过 p5.js 中的 createButton 函数创建的 slider 的样式?

javascript - 将样式表添加到 Firefox Bootstrapped Addon