小编Mik*_*ike的帖子

在javascript中设置默认值的惯用方法

在javascript中执行以下操作的最惯用方法是什么:

如果调用者没有将myParam传递给MyFunc,那么我想将其设置为默认值.但首先我想尝试从另一个可能尚不存在的对象中获取它:

function MyFunc(myParam) {

    if (!myParam) {
        if (!myObj) {
            myParam = 10;
        }
        else {
            myParam = myObj.myParam;
        }
    }

    alert(myParam);
}
Run Code Online (Sandbox Code Playgroud)

我开始写:

    myParam = myParam || myObj.mParam || 10
Run Code Online (Sandbox Code Playgroud)

但意识到如果myObj不存在那么这将失败.我猜可以猜到:

    myParam = myParam || (myObj && myObj.mParam) || 10
Run Code Online (Sandbox Code Playgroud)

它甚至可能有效.但这是最好的方式吗?

例如John Resig会怎么做?

javascript

15
推荐指数
1
解决办法
9225
查看次数

如何以编程方式迭代datagrid行?

经过多年的网络开发,我突然回到了WinForms,并且遇到了一些应该很简单的问题.我有一个ArrayList绑定到Windows窗体的业务对象DataGrid.我希望用户能够编辑单元格,完成后,按"保存"按钮.此时,我想迭代所有的行和列 DataGrid以查找任何更改,并将它们保存到数据库中.但我找不到访问DataGrid行的方法.

我还想在编辑时实时验证单个单元格,但我很确定可以完成.(也许没有ArrayListDataSource?)但至于迭代DataGrid,我很惊讶它似乎不可能.

我是否必须将业务对象数据填充到数据表中才能使用数据网格?

winforms

4
推荐指数
1
解决办法
8386
查看次数

Javascript'这个'问题

当setTimeout调用它的匿名回调时,为什么'me'和'this'未定义?

    var gMyObj = new MyObj();
    gMyObj.myFunc();

    function MyObj() {
        this.myFunc = function () {
            var me = this;
            alert(me.constructor);  // defined
            setTimeout(function(me) {  
                      alert(me.constructor); // undefined
                  }, 100);
        };
    }
Run Code Online (Sandbox Code Playgroud)

解决方案:所选答案是正确的,谢谢.我的问题是简化了我遇到的真正问题,结果证明jQuery在click()方法中修改了'this',以便它指向相关的DOM元素.我创建了一个新的var,'me',以保持'this',并试图将其传递给click方法.我需要做的只是在click事件中使用'me',并让闭包保持对它的引用.将'me'传递给click()失败,原因与此示例中失败的原因相同,即click()没有预料到它.

javascript jquery

2
推荐指数
1
解决办法
295
查看次数

声明对象文字内部的原型

我正在创建一个对象文字,我将其用作命名空间.对象文字(命名空间)碰巧包含构造函数MyConstructor.我想在对象文字中扩展MyConstructor的原型.如果我将MyConstructor的声明拉出来并将其放在myNamespace的声明之上,那么一切都很好,除了myConstructor不再被myNamespace命名.如何最好地使这项工作?由于
'' ,以下无法编译.在这一行:

MyConstructor.prototype = {
Run Code Online (Sandbox Code Playgroud)

下面提供了对象文字.

谢谢,迈克

var myNamespace = {
    a:  3,
    b: function (msg) {
        alert(this.a);
    },
    MyConstructor: function(xx) {
        this.x = xx;
    },
    MyConstructor.prototype = {
        a: 1,
        b: function() {
            return true;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

更新:已接受的解决方案有效.但是,我的问题的前提是有缺陷的.在这种情况下,我根本不会使用对象文字,因为我发现单元测试更难.相反,我会使用由构造函数创建的普通对象,并将私有对象放在其中.另一件事是,"自我/立即执行的功能",虽然在某些方面很漂亮,但对新手来说有点难以解释.

javascript

1
推荐指数
2
解决办法
1885
查看次数

标签 统计

javascript ×3

jquery ×1

winforms ×1