Javascript";应用";函数似乎不适用于全局";这个"
Javascript "apply" function seems not working for global "this"?
我在nodejs:中测试了'this'关键字的作用域
color = 'red';
var o = {
color: 'blue'
};
function say() {
console.log(this.color);
};
say.apply(this); //'undefined'
say.apply(global);//'red'
在浏览器中:
color = 'red';
var o = {
color: 'blue'
};
function say() {
alert(this.color);
};
say.apply(this); //'undefined'
say.apply(window);//'red'
var color = 'red';
function say() {
alert(this.color);
}
say.apply(this); //'red'
say.apply(window); //'red'
结果对我来说有点奇怪:只要"this"是指向"global"或"window"的指针,为什么说.apply(this(会输出"undefined"?
谢谢。
在这种情况下,您的this
确实不足,因为color = 'red';
有一个等价物:global.color = 'red';
。要使其与this
相关,您需要自己完成:this.color = 'red';
要从o
对象中获得颜色值,您需要编写以下内容:
say.apply(o);
这是使用apply()
:的好例子
function printArgs() {
var join = [].join; // copy link of array.join into variable
// call join with "this=arguments",
// this call is equivalent with "arguments.join(':')"
// here we have guarantee that method 'join()' was called from 'arguments'
// (not from other object)
var argStr = join.apply(arguments, [':']);
console.log( argStr ); // output will looks like '1:2:3'
}
printArgs(1, 2, 3);
你也可以在这里找到有用的信息:
- ";这个";在node.js模块和函数中
- 打电话和申请有什么区别
- Javascript调用((&apply((和bind((
相关文章:
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- PHP中的setcookie仅适用于localhost
- html5 drawImage适用于firefox,而不是chrome
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- ResolveUrl是否适用于././也
- Firebase updateChildValues适用于IOS,但不适用于Web和Android
- JavaScript警报适用于int,但不适用于string
- SQLite插件适用于Mac和Windows,但不适用于手机上的Safari
- Regex Replace仅适用于Last Match
- window.onload适用于aspx页面,但不适用于普通html
- Jquery Ajax POST不工作.适用于GET
- 画布上的自定义字体仅适用于safari
- Javascript仅适用于alert()和Debug模式
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- Regex不适用于Firefox,但适用于Chrome
- 通过单击主菜单外部关闭子菜单'不适用于IE,但适用于Firefox&铬
- AngularJS$http.post没有'不适用于Chrome,仅适用于IE
- "捆绑;仅适用于HTML/JS的解决方案
- 休息请求以“0”结尾/"适用于chrome,而不是firefox