小编Mar*_*hes的帖子

Javascript:在该对象中调用对象方法

实现以下目标的最佳设计模式是什么(不起作用)?

var obj = (function() {

  // code defining private variables and methods

  var _obj = {
    property: value,
    method1: function() {
      // do stuff
    },
    method2: function() {
      // use property
      var prop = _obj.property; // obviously doesn't work
      // call method1
      obj.method1(); // "obj" not finished being defined yet!
    }
  };

  // obviously now I could do...
  var prop = _obj.property;

  return _obj;

})();

// and I could now do...
obj.method1();
Run Code Online (Sandbox Code Playgroud)

我认为应该有的变化是

var obj = (function() {

  var …
Run Code Online (Sandbox Code Playgroud)

javascript oop methods

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

Javascript:有效地将项目移入和移出固定大小的数组

如果我想要一个固定大小为N的数组,以便缓存最近的N个项目,那么一旦达到限制N,我将不得不在添加最新项目时删除最旧的项目.

注意:我不关心最新项目是否在数组的开头或结尾,只要项目按添加顺序删除即可.

显而易见的方法是:

  • push()shift()(所以cache[0]包含最旧的项目),或
  • unshift()pop()(所以cache[0]包含最新的项目)

基本理念:

var cache = [], limit = 10000;

function cacheItem( item ) {

    // In case we want to do anything with the oldest item
    // before it's gone forever.
    var oldest = [];

    cache.push( item );

    // Use WHILE and >= instead of just IF in case the cache
    // was altered by more than one …
Run Code Online (Sandbox Code Playgroud)

javascript arrays caching

7
推荐指数
1
解决办法
276
查看次数

Javascript:快速查找对象中的值(就像我们可以使用属性一样)

我有一个对象具有用于简单编码/解码的替换值对(不是为了安全,只是为了方便;太复杂,无法在此解释).它在形式中

var obj = {x: y,
           x: y,
           ...
          };
Run Code Online (Sandbox Code Playgroud)

其中'x'是编码时的值,'y'是解码值.

解码很简单:我循环遍历字符串的字符,并charAt(i)通过括号查找对象中的值:obj[ str.charAt(i) ].(我将检查是否需要大写或小写版本(对象中的所有键/值都是小写),但这很简单.)

要进行编码,我当然必须在对象中查找值,而不是属性.目前,我使用循环遍历属性for ... in ...并根据值检查charAt(i)值.我目前的代码是:

var i, j,
    output = '',
    str = 'Hello World!',
    obj = {'s':'d',
           'm':'e',
           'e':'h',
           'x':'l',
           'z':'o',
           'i':'r',
           'a':'w',
           'o':'!',
           '-':' '};
for (i = 0; i < str.length; i++) {
    for (j in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, j) &&
            Object.prototype.propertyIsEnumerable.call(obj, j)) {
            if (obj[j] === str.charAt(i)) {
                output += j;
                break;
            } else …
Run Code Online (Sandbox Code Playgroud)

javascript lookup loops object

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

标签 统计

javascript ×3

arrays ×1

caching ×1

lookup ×1

loops ×1

methods ×1

object ×1

oop ×1