小编Max*_*Max的帖子

Javascript:在线测量代码执行时间

我遇到了测试某些代码变体(本机/插件)性能差异的需求.

是否有一个在线服务,如jsbin,jsfiddle执行,我可以把代码放在哪里,比如

// BEGIN
var bla;
jQuery.map(bla, function(){});
// END
Run Code Online (Sandbox Code Playgroud)

并获得执行时间?

javascript performance performance-testing

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

可重用的javascript对象,原型和范围

MyGlobalObject;

function TheFunctionICanUseRightAwaySingleForAllInstansesAndWithoutInstanse() {
    function() {
        alert('NO CONSTRUCTOR WAS CALLED');
    }
};
Run Code Online (Sandbox Code Playgroud)

长命名函数必须可以调用MyGlobalObject,在window加载脚本后,它必须始终作为全局(to )变量可用.它应该支持符合最新标准的可扩展性.

我正处于如何为应用程序构建JS基础的架构困境(几乎100%JS).

我们需要一个对象即window.MyObject(像一个模块,比如jQuery)

它可以创建

VAR1

 var MyGlobalObjConstructor = function(){
     this.GlobalFunctionInObject = function(){
        alert('called with MyGlobalObj.GlobalFunctionInObject()');
        }        
};
window.MyGlobalObj = new MyGlobalObjConstructor();    
Run Code Online (Sandbox Code Playgroud)

MyGlobalObj可扩展的?我可以创建子对象,它将继承MyGlobalObj(MyGlobalObj.NewFunc例如扩展函数/属性)的当前状态吗?使用原型(VAR3)之间的主要区别是什么?

通过GlobaldFunction我的意思是所有的初始化/实例化(可能instantializable)情况下,单一实例..

或者

VAR2

var MyGlobalObj = {
    GlobalFunctionInObject: function...
    GlobalFunctionInObject2: function...
};
MyGlobalObj.GlobalFunctionInObject();
// here I lose all hierarchy elements, no prototype, 
// can I use GlobalFunctionInObject2 in GlobalFunctionInObject?
Run Code Online (Sandbox Code Playgroud)

或者

VAR3 …

javascript scope prototype

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

Javascript:仅使用另一个对象中的字段覆盖一个对象中的现有字段

当且仅当目标字段存在时,javascript中是否有一种方法可以将对象中的命名字段的值分配给另一个对象的相同字段.即覆盖旧值,不添加新值,使用ideomatic构造,单行(特殊于javascript和/或jQuery)并且绝不循环,甚至for-in.

var theSource = {
 field1: "TEXT",
 field2: "VAL",
 field3: "ZZ",
 field4: "4",
 field5: "5"
},
theTarget = {
 field2: "0",
 field3: "",
 field4: null,
 field5: undefined
};
Run Code Online (Sandbox Code Playgroud)

就像是

var result = jQuery.overwriteOnlyExisting(theTarget, theSource);
result === {
 field2: "VAL"
 field3: "ZZ"
... 
}
Run Code Online (Sandbox Code Playgroud)

不保留field1和field3之后的旧字段.

jQuery.extend - 可以覆盖值,但也会复制新字段.

我们在这有哪些选择?

http://jsbin.com/owivat/1/edit(下划线) - 我喜欢这个,现在是找到jquery方式的时候了.

结果:

_.extend(theTarget, _(theSource).pick(_(theTarget).keys()));
Run Code Online (Sandbox Code Playgroud)

142,850 Ops/sec

Object.keys(theTarget).map(function(a) { if (a in theSource) theTarget[a] = theSource[a]; });
Run Code Online (Sandbox Code Playgroud)

403,243 Ops/sec

javascript jquery object

7
推荐指数
3
解决办法
7391
查看次数

不要将css样式应用于子元素

我们有

<div class="xTable">
 <table>
  <tr>
   <td>
    <div class="xTable">
     <table>
      <tr>
       <td>
        <div class="xTable">
         <table>...</table>
        </div>
       </td>
      </tr>
     </table>    
    </div>
   </td>
  </tr>
 </table>
</div>
Run Code Online (Sandbox Code Playgroud)

如何将自定义CSS样式应用于2nd div,仅应用于2nd div而不是1或3或更深?

没有办法添加额外的课程或IDS!Html是动态生成的,无法管理.

我会用

.xTable table .xTable
Run Code Online (Sandbox Code Playgroud)

但这意味着第三和更深的div将受到影响.

没有ID!请仅限CSS选择器.

谢谢!

html css css-selectors

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

选择具有给定类(CSS)的第一个孩子

我们有一个部分HTML:

<ul>
    <li class="class1">AFFECTED</li>
    <li class="class1 class2">NOT</li>
    <li class="class1">NOT</li>
</ul>

<ul>
    <li class="class1 class2">NOT</li>
    <li class="class1">AFFECTED</li>
    <li class="class1">NOT</li>
</ul>

<ul>
    <li>NOT</li>  
    <li class="class1">AFFECTED</li>
    <li class="class1">NOT</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我需要一个通用的 css选择器,用于任何只有class1的列表的第一个li.

  • 李的额外课程(class2)不得受到影响.
  • 只应选择第一个带class1的li(改变A的外观)
  • 没有JS/jQuery.
  • li是浮动的,所以没有硬编码的n-child.
  • 代码是自动生成的,因此无法添加/删除自定义类.

我试过使用:not(class2),[class2]:first-child&:first-of-type但没有用.

谢谢!

解决方案:http://jsfiddle.net/6hxZa/3/

html css css-selectors css3

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