相关疑难解决方法(0)

在Javascript中,这个下划线是什么意思?

var Gallery = Backbone.Controller.extend({
    _index: null,
    _photos: null,
    _album :null,
    _subalbums:null,
    _subphotos:null,
    _data:null,
    _photosview:null,
    _currentsub:null,
    routes: {
        "": "index",
        "subalbum/:id": "subindex",
        "subalbum/:id/" : "directphoto",
        "subalbum/:id/:num" : "hashphoto"
    },
    initialize: function(options) {
        var ws = this;
        if (this._index === null){
            $.ajax({
                url: 'data/album1.json',
                dataType: 'json',
                data: {},
                success: function(data) {
                    ws._data = data;
                    ws._photos =
                    new PhotoCollection(data);
                    ws._index =
                    new IndexView({model: ws._photos});
                    Backbone.history.loadUrl();
                }
            });
            return this;
        }
        return this;
    },
    //Handle rendering the initial view for the
    //application
    index: function() …
Run Code Online (Sandbox Code Playgroud)

javascript oop backbone.js

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

如何从指令访问主机组件?

说我有以下标记:

<my-comp myDirective></my-comp>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以从指令访问组件实例?

更具体地说,我希望能够访问MyComponentfrom 的属性和方法MyDirective,理想情况不向上面的HTML添加任何内容.

angular-directive angular

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

_函数名称中的下划线

在许多具有简单OO功能(PHP 4)或误解OO功能(使用函数指针等的Javascript,C)的语言中,您最终会得到一个使用前导下划线来表示权限级别的函数命名约定.

//ex.
function _myPrivateFunction(){
}   
Run Code Online (Sandbox Code Playgroud)

虽然各个团队总是会提出这样的命名惯例,但是下划线惯例看起来如此普遍,以至于让我很好奇

  1. 技术最初的来源
  2. 如果围绕公约制定了任何标准化系统(有点像匈牙利符号)

除了纯粹的好奇心之外,我在一些我正在处理的代码库中看到了这一点,并且我想了解最初提出它的开发人员可能的顶空.

javascript php oop history naming-conventions

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

_(variable_name)在javascript中的含义是什么?

我遇到了以下javascript代码:

this.removeEdge = function(source, target) {
  if(!_states[source]) return;

  var children = _states[source].children,
      index = _(children).indexOf(target);
  if(index !== -1) children.splice(index, 1);
};
Run Code Online (Sandbox Code Playgroud)

_(儿童)是什么意思?

javascript

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

在JavaScript中定义属性和命名约定

我是一名优秀的JavaScript程序员,并且遵守道格拉斯·克罗克福德所征集的编码惯例.然而,JavaScript从那时起已经发展,我相信命名约定现在已经过时了.

例如Crockford说:

不要使用_(下划线)作为名称的第一个字符.它有时用于表示隐私,但实际上并不提供隐私.如果隐私很重要,请使用提供私人会员的表格.避免表现出缺乏能力的惯例.

但是,JavaScript现在允许您创建不可枚举的属性.因此,有意义的是(至少对我来说 - 你被允许不同意)使用下划线为非可枚举属性添加前缀以指示该属性是不可枚举的.

你为什么要这样做?

  1. 因为视觉反馈很重要(向下滚动到链接文章中的可读性部分).
  2. 向后兼容性.您可以过滤出以for in循环中的下划线开头的属性.

让我们再举一个Crockford所说的例子:

全局变量应该全部上限.(JavaScript没有宏或常量,因此使用全部大写来表示JavaScript没有的功能没有多大意义.)

正如我所看到的,以下约定存在两个问题:

  1. 大多数JavaScript程序员不会在全部大写中编写全局变量.这不自然.
  2. JavaScript现在允许您创建不可写属性.因此,对于这些属性使用全部大写是有意义的,其原因与我上面针对不可枚举的属性所述的相同.

一切都很好,但你问的真正问题是什么?看看这个Object.defineProperties功能.问题是您需要为要定义的每个属性提供属性描述符.这太冗长了.例如:

var o = {}, x = 0;

Object.defineProperties(o, {
    E: {
        value: Math.E,
        enumerable: true,
        configurable: true
    }
    x: {
        enumerable: true,
        configurable: true,
        get: function () {
            return x;
        },
        set: function (y) {
            x = y;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

相反,如果您只是这样做会更好:

var o = {}, x = 0;

define(o, …
Run Code Online (Sandbox Code Playgroud)

javascript coding-style naming-conventions

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

你能在JavaScript中继承私有函数吗?

我正在使用一个闭包来创建一个私有和公共方法的对象.它看起来像这样 -

var Dog = (function() {
    function Dog() {}

    var size = 'big';

    var _privateSaySize = function() {
        return 'I am a ' + size + ' dog.';
    }

    Dog.prototype.publicSaySize = function() {
        return _privateSaySize();
    }

    return Dog;
})();
Run Code Online (Sandbox Code Playgroud)

但是现在我希望有一个只有私有函数并且由另一个对象继承的对象.但这在JavaScript中是否可行?

javascript

10
推荐指数
3
解决办法
391
查看次数

JavaScript中的下划线“ _”是什么?

我正在做一个redux教程,并且看到这样的呼叫:

this._render();
Run Code Online (Sandbox Code Playgroud)

在其他地方定义为:

_render() {
    ....
} 
Run Code Online (Sandbox Code Playgroud)

下划线“ _”是什么?为什么使用它?

javascript reactjs react-redux

7
推荐指数
2
解决办法
7007
查看次数

不显示带有下划线的Visual Studio Intellisense方法

我正在使用VS2012,我的一个项目范围的Javascript函数名称空间的所有公开方法都以下划线开头_,例如:

var NameSpace = {
    _aMethod = function () { },
    _anotherMethod = function () { }
};
Run Code Online (Sandbox Code Playgroud)

我为命名空间创建了一个快速的vsdoc文件,并且命名空间本身出现了,但没有一个方法可以.注意:如果我_在方法的开头删除它,它就像一个魅力.

// This would work, and show up in the VSDOC
var NameSpace = {
    aMethod = function () { },
    anotherMethod = function () { }
 // ^ notice no underscores
};
Run Code Online (Sandbox Code Playgroud)

有没有办法解决?

通过整个项目并重命名它们(即使使用find-all)也会有风险,因为这些方法与所有内容交织在一起.

javascript intellisense visual-studio-2010 visual-studio visual-studio-2012

5
推荐指数
1
解决办法
1268
查看次数

从以_开头的javascript变量可以推断出什么?

来自jquery.ui.autocomplete.js:

_renderMenu: function( ul, items ) {
    var self = this;
    $.each( items, function( index, item ) {
        self._renderItem( ul, item );
    });
},
Run Code Online (Sandbox Code Playgroud)

javascript jquery naming-conventions

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

从这里访问原型功能

我正在尝试修复一些使用函数和原型函数的Javascript.出于某种原因,当我尝试访问原型函数时,原型函数总是未定义的,我无法弄清楚原因.

这是我想要做的一个简单的例子.基本上,我想_open从原始Container函数声明中引用原型this.

Container();

function Container() {
    alert(this._open);
}

Container.prototype._open = function() {
    alert("hey");
}
Run Code Online (Sandbox Code Playgroud)

你可以在小提琴中看到它只是警告"未定义".但是这个问题这个问题都显示了人们这样做的例子.为什么我一直未定义?

javascript

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

带下划线和不带下划线的 JavaScript 属性之间的区别

我在https://javascript.info/class看到了下面的代码

它的构造函数正在获取name参数并将其分配给this.name. 然后在名为 getter 的 getter 中name返回this._name。为什么即使构造函数不用于设置值,此代码也能工作?this._name

class User {

  constructor(name) {
    // invokes the setter
    this.name = name;
  }

  get name() {
    return this._name;
  }

  set name(value) {
    if (value.length < 4) {
      alert("Name is too short.");
      return;
    }
    this._name = value;
  }

}

let user = new User("John");
alert(user.name); // John

user = new User(""); // Name is too short.
Run Code Online (Sandbox Code Playgroud)

javascript

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