小编dar*_*ong的帖子

Javascript变量 - Getter问题

我想出了下面的情况:

function Dog () {
    "use strict";
    this.age = 1;
    var name = "Fido";
    this.getName = function () { return name; }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在创建一个"Dog"类的新实例并打印变量的值.

var d = new Dog;
document.write('<strong>Dog age:</strong> ' +d.age); \\Outputs "1" as expected
document.write('<br/>');
document.write('<strong>Dog name:</strong> ' +d.name); \\Outputs "undefined" as expected, 'cause it's a private variable.
document.write('<br/>');
document.write('<strong>Get Dog name:</strong> ' +d.getName()); \\Outputs "Fido", as expected.
Run Code Online (Sandbox Code Playgroud)

但是,假设我想改变Dog的名字,如下所示:

d.name = "Stinky";
document.write('<br/>');
document.write('<strong>Dog name Again:</strong> ' +d.name); 
document.write('<br/>');
document.write('<strong>Get Dog name Again:</strong> ' +d.getName());
Run Code Online (Sandbox Code Playgroud)

基于此,我提出了几个问题:

  1. 为什么在地球上"d.name"没有向我显示"未定义"?"名称"不是私有变量吗?我想你不能改变私有变量值,对吗?我想知道这个过程是否创建了一个新变量,但这次是一个公共变量,并且具有相同的名称.如果是这样,每次我尝试分配一个具有相同名称的新属性时,是否有办法阻止创建新变量?有没有办法抛出"类型错误"或其他东西(嗯,这是我的预期). …

javascript variables getter private

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

JS:为什么"x"变量的值未定义?

为什么x下面示例中的变量返回undefined而不是25?

var x = 25;

(function() {
  console.log(x);
  var x = 10;
})();
Run Code Online (Sandbox Code Playgroud)

javascript function hoisting

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

在字符串javascript中获取indexOf char

如何检查字符串中char的索引?

var str = 'alabama';
alert(str.indexOf('a'));
Run Code Online (Sandbox Code Playgroud)

"indexOf"方法似乎只在第一次出现char时起作用.有任何想法吗?

javascript string indexof

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

sessionStorage setItem返回true或false

我想弄清楚返回的setItem方法是什么sessionStorage.据我所知,以下代码返回undefined:

var set = sessionStorage.setItem('foo', 'bar');
console.log(set);
Run Code Online (Sandbox Code Playgroud)

我需要知道项目是否成功设置或是否失败.如何在不知道回报的情况下实现这一目标?

javascript html5 sessionstorage

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

将jQuery对象存储到Array中以供以后使用

我试图制作一个脚本,根据JSON创建一些按钮,我用我需要的属性传递给它,如下所示:

var opts = {};
opts.buttons = [{
    type: "button",
    klass: "btn-default",
    text: "No"
    }, {
    type: "button",
    klass: "btn-primary",
    text: "Yes"
}];

var arr = [];
var button = $("<button></button>");
_.each(opts.buttons, function (v, k) {
    button.prop("type", v.type)
        .prop("class", v.klass)
        .html(v.text);
    arr.push(button);
});
Run Code Online (Sandbox Code Playgroud)

然后,将它们串起来,就像这样:

var str = arr.join('');
$('#someEl').html(str);
Run Code Online (Sandbox Code Playgroud)

但这不符合我的想法.返回[object Object] [object Object]而不是按钮标签.

我怎样才能做到这一点?任何帮助都会非常好.

javascript arrays jquery object

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

AngularJS传递数据以形成不起作用

我试图将一些数据传递给angularjs表单但没有成功.我正在定义一个模块,在模板中调用它并将模板绑定到控制器.我们的想法是将一些内容传递给$ scope变量,以便将现有用户名显示为该字段的值.相同的表单将用于添加和编辑用户.在后一种情况下,我会通过获取ID的用户,并通过自己的信息到$scope通过myForm变量.

这里有一个让事情变得简单的人:http ://plnkr.co/edit/nAabxgrw4HqLcgrErVxq?p=preview

模板:

<div ng-app="App">
<form ng-controller="TestController" class="form-horizontal" name="myForm" novalidate>
  <div class="form-group" ng-class="{ 'has-error' : myForm.username.$invalid && !form.username.$pristine }">
                        <div class="col-md-6">
                            <label class="control-label no-padding-right" for="username">Nome</label>
                            <input 
                                name="username" 
                                id="username" 
                                ng-model="username" 
                                type="text" 
                                class="form-control" 
                                ng-required="true" />
                            <p ng-show="myForm.username.$invalid && !myForm.username.$pristine" 
                                        class="help-inline no-padding">This field is required</p>
                        </div>
                    </div>
 <p>{{ myForm.username }}</p>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)

码:

window.angular.module('App', []);
window.angular.module('App').controller('TestController', ['$scope', function ($scope) {
  $scope.myForm = {};
  $scope.myForm.username = 'John Doe';      
}]);
Run Code Online (Sandbox Code Playgroud)

任何帮助都是极好的.

javascript angularjs angularjs-templates

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