标签: function

在Javascript中扩展对象

我目前正在从Java转换为Javascript,我有点难以弄清楚如何按照我希望的方式扩展对象.

我见过互联网上有几个人使用一种名为extend on object的方法.代码如下所示:

var Person = {
   name : 'Blank',
   age  : 22
}

var Robot = Person.extend({
   name : 'Robo',
   age  : 4
)}

var robot = new Robot();
alert(robot.name); //Should return 'Robo'
Run Code Online (Sandbox Code Playgroud)

有谁知道如何使这项工作?我听说你需要写

Object.prototype.extend = function(...);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使这个系统工作.如果不可能,请告诉我另一个扩展对象的替代方案.

javascript extends prototype function object

151
推荐指数
10
解决办法
25万
查看次数

在Javascript中使用动态参数调用动态函数

我正在寻找一个关于这个的伎俩.我知道如何在Javascript中调用动态的任意函数,传递特定的参数,如下所示:

function mainfunc(func, par1, par2){
    window[func](par1, par2);
}

function calledfunc(par1, par2){
    // Do stuff here
}

mainfunc('calledfunc', 'hello', 'bye');
Run Code Online (Sandbox Code Playgroud)

我知道如何在mainfunc中使用arguments []集合传递可选的无限参数,但是,我无法想象如何向mainfunc发送任意数量的参数以动态发送到calledfunc ; 我怎么能完成这样的事情,但有任意数量的可选参数(不使用丑陋的if-else)?:

function mainfunc(func){
    if(arguments.length == 3)
        window[func](arguments[1], arguments[2]);
    else if(arguments.length == 4)
        window[func](arguments[1], arguments[2], arguments[3]);
    else if(arguments.length == 5)
        window[func](arguments[1], arguments[2], arguments[3], arguments[4]);
}

function calledfunc1(par1, par2){
    // Do stuff here
}

function calledfunc2(par1, par2, par3){
    // Do stuff here
}

mainfunc('calledfunc1', 'hello', 'bye');
mainfunc('calledfunc2', 'hello', 'bye', 'goodbye');
Run Code Online (Sandbox Code Playgroud)

javascript function

149
推荐指数
5
解决办法
20万
查看次数

调用变量中命名的JavaScript函数

我有一个JavaScript变量,其中包含JavaScript函数的名称.通过使用$ .ajax等加载和放置页面上存在此函数.

谁能告诉我如何调用变量中命名的javascript函数,好吗?

函数的名称位于变量中,因为用于加载页面片段的URL(插入到当前页面中)包含要调用的函数的名称.

我对如何实施此解决方案的其他建议持开放态度.

javascript variables function

148
推荐指数
4
解决办法
20万
查看次数

多个参数与选项对象

在创建具有多个参数的JavaScript函数时,我总是面临这样的选择:传递参数列表与传递选项对象.

例如,我正在编写一个函数来将nodeList映射到数组:

function map(nodeList, callback, thisObject, fromIndex, toIndex){
    ...
}
Run Code Online (Sandbox Code Playgroud)

我可以改用它:

function map(options){
    ...
}
Run Code Online (Sandbox Code Playgroud)

options是一个对象:

options={
    nodeList:...,
    callback:...,
    thisObject:...,
    fromIndex:...,
    toIndex:...
}
Run Code Online (Sandbox Code Playgroud)

推荐哪种方式?是否有何时使用其中一种?

[更新]似乎有一个共识支持选项对象,所以我想添加一个注释:在我的案例中我试图使用参数列表的一个原因是有一个与JavaScript一致的行为内置于array.map方法.

javascript json arguments function object

148
推荐指数
6
解决办法
4万
查看次数

Swift 3可选的转义闭包参数

鉴于:

typealias Action = () -> ()

var action: Action = { }

func doStuff(stuff: String, completion: @escaping Action) {
    print(stuff)
    action = completion
    completion()
}

func doStuffAgain() {
    print("again")
    action()
}

doStuff(stuff: "do stuff") { 
    print("swift 3!")
}

doStuffAgain()
Run Code Online (Sandbox Code Playgroud)

有没有办法制作类型的completion参数(和action)Action?并保持@escaping?

更改类型会出现以下错误:

error: @escaping attribute only applies to function types

删除@escaping属性,代码编译并运行,但似乎不正确,因为completion闭包正在逃避函数的范围.

closures function optional swift3

148
推荐指数
5
解决办法
5万
查看次数

在一个类中使用带有成员函数的通用std :: function对象

对于一个类,我想在一个map存储std::function对象中存储一些函数指针到同一个类的成员函数.但是我在这个代码的开头就失败了:

class Foo {
    public:
        void doSomething() {}
        void bindFunction() {
            // ERROR
            std::function<void(void)> f = &Foo::doSomething;
        }
};
Run Code Online (Sandbox Code Playgroud)

我收到error C2064: term does not evaluate to a function taking 0 arguments的xxcallobj一些奇怪的模板实例化的错误结合.目前我正在使用Visual Studio 2010/2011在Windows 8上工作,在使用VS10的Win 7上工作也失败了.错误必须基于我不遵循的一些奇怪的C++规则.

编辑:我不使用提升.这是集成在MS编译器中的C++ 11.

c++ function-pointers function tr1 c++11

147
推荐指数
5
解决办法
12万
查看次数

JavaScript([,function])的定义是什么?

我看到这在JavaScript中一直被使用:

define(['param1', 'param2'], function() {

});
Run Code Online (Sandbox Code Playgroud)

功能是什么define?

javascript function requirejs-define

146
推荐指数
2
解决办法
16万
查看次数

T-SQL - 具有默认参数的函数

我有这个脚本:

CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
    IF EXISTS ( bla bla bla )
        RETURN 1;
    RETURN 0;
END
GO
Run Code Online (Sandbox Code Playgroud)

我想以这种方式在一个过程中使用它:

IF dbo.CheckIfSFExists( 23 ) = 0
    SET @retValue = 'bla bla bla';
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

为程序或函数dbo.CheckIfSFExists提供的参数数量不足.

为什么不起作用?

t-sql function default-parameters

145
推荐指数
3
解决办法
14万
查看次数

在python中使用参数列表调用函数

我试图在python中调用另一个函数内的函数,但找不到正确的语法.我想做的是这样的:

def wrapper(func, args):
    func(args)

def func1(x):
    print(x)

def func2(x, y, z):
    return x+y+z

wrapper(func1, [x])
wrapper(func2, [x, y, z])
Run Code Online (Sandbox Code Playgroud)

在这种情况下,第一个呼叫将起作用,第二个呼叫不起作用 我想要修改的是包装函数而不是被调用的函数.

python function

144
推荐指数
5
解决办法
29万
查看次数

如何从函数内部确定函数名称

如果我有这样的BASH脚本:

#!/bin/bash

f() {
  # echo function name, "f" in this case
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?这可以用在诸如的帮助消息中

printf "Usage: %s: blah blah blah \n" $(basename $0) >&2; 
Run Code Online (Sandbox Code Playgroud)

只有在这种情况下我想要的不是$0,这是脚本的文件名.

bash function

142
推荐指数
4
解决办法
4万
查看次数