我正在通过学习javascript。我了解了bind (以及之前关于call和apply的一课),我看到会询问这3种语言的区别。
读完所有这些之后,我想知道:有没有这样一种场景,使用bind既不能满足使用call也不能满足使用apply的需要?我的意思是,call或apply是用于立即调用函数的。bind -稍后。
下面的方法不是在所有情况下都有效吗?
let f = function(){/* code here */};
let errorFreeF = f.bind(myContextObj);
errorFreeF();
一个不太冗长的代码片段:
function(){/* code
我有一个文件tools.js,其中有多个函数:
const another_module = require('another_module');
module.exports = {
js_call: function(args={}) {
/* This function is executed when a JavaScript function should be called
Call structure:
args = {
'obje
尽管我在这方面查阅过所有的书籍和博客,但我还没有完全理解如何调用js .apply(),而js()在更改函数上下文中非常重要。有时我做得对,有时我没有,签下一切还不太好。
function sumArr(arr){
var sum =0;
for(var i =0; i<arr.length; i++){
sum+= arr[i];
}
return sum
}
var x = [3, 6, 8];
var obj ={
name: 'somebody',
scores:[3, 6, 8]
}
// console.log(sumArr(x)) outputs 17,
在PHP中,每个类都包含一个“神奇”的__call函数。使用这个方法可以动态地拦截对类的所有调用。例如,使用
class TestClass {
public function __call($functionname, $arguments) {
.. functionname called
}
}
请参阅
JavaScript/Node.js中有类似的东西吗?是在模块上(按要求加载)还是用于类?
更新:感谢所有评论。这在纯JavaScript中似乎是不可能的。至少目前如此。
正如bfavaretto所指出的,这可以通过在Node.js中启用和谐
我正在尝试使用karate.call来调用一个JS文件的函数,该文件接收两个参数(字符串,字符串数组)。但是,字符串数组不会传递到JS文件。 JS文件包含: function(query, fragments) {
// Here lies some code
// One of them includes fragments.length;
} 我以这种方式在另一个JS文件上调用JS函数: //var query = 'Some string';
//var fragments = ['fragment1', 'fragment2'];
va
我得到了一个遗留系统,可以向其中添加新数据,所以我从现有的数据表中进行了复制。我遇到的问题是,看起来存储过程永远不会在应用程序端触发(其他存储过程运行得很好)。 我使用api文件夹中的控制器使用用户ID执行mssql查询。 /**
* Get list of calls per user
*/
exports.list = function (req, res) {
var conn = new mssql.Connection(config.mssql);
conn.connect(function (err) {
if (err) {
我正在尝试通过阅读Fabric.js的源代码来学习Javascript。
在文件util/lang_array.js中,有一个方法看起来像这样:
var slice = Array.prototype.slice;
function invoke(array, method) {
var args = slice.call(arguments, 2), result = [ ];
for (var i = 0, len = array.length; i < len; i++) {
result[i] = arg
我正在尝试完成脚本的最后一个阶段,即显示响应。我有一个Meteor方法,它通过basic从Zendesk的API请求一个对象。Meteor.call()在我的客户机部分中调用此方法。我可以记录响应,但无法让它绑定和显示。
这是我的js:
if (Meteor.isClient) {
// This code only runs on the client
angular.module('equationKPIs', ['angular-meteor']);
angular.module('equationKPIs').
我使用jQuery getScript将X数量的js文件加载到我的页面中。每个JS页面都有一个AJAX调用,从数据库中获取数据。
我在getScript上使用getScript方法来查看何时加载了所有文件,但我需要等待所有AJAX调用都完成。
在做一些事情之前,我如何等待AJAX调用通过getScript在包含的文件中完成?
$.getMultiScripts(moduleIncludes, 'includes/js/modules/').done(function() {
// All of the JS files have been included but we
我有以下代码:
script.js:
var app = angular.module('TestApp',[]);
app.factory('testfactory', function($rootScope, $window){
var factory = {};
factory.auth = function() {
//This is only to make call to auth() async.
//Actual code is using google-api call.
setTimeout(auth, 20
b/c我使用的是angular js,在使用$rootScope.something时,我经常会遇到解析问题
是否有可能做一个
function inthecontextof(obj, func){
func.call(obj);
}
我能做的就是
inthecontextof($rootScope, function(){
flamingo = 5 //$rootScope.flamingo is what im refering to
$apply()
}
我在JavaScript中读了很多关于bind()和JavaScript的文章,特别是关于这个的创建简写部分。
我试图在JS中实现以下Python-esque函数:
var arr = [1,2,3];
len(arr); // 3
我确实意识到这是一个人为的例子,但我试图把我的头脑围绕这些方法。下面是我实现它的方法:
var len = Function.prototype.call.bind( Array.prototype.slice.length );
len([1,2,3]);
当我运行它时,我得到:
len([1,2,344])
^
TypeError: len is not a
原始线程
示例js代码,
function some_function2(url, callback) {
var httpRequest; // create our XMLHttpRequest object
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// Internet Explorer is stupid
httpRequest = new