javascript - 对 `this` 关键字的混淆

标签 javascript oop this

我正在阅读 crockford 的 Javascript: The Good Parts 并且正在研究调用模式类(class)中的这段代码:

var br = "<br />";

var add = function(a,b) {
    a + b;
}

var myObject = {
    value: 0,
    increment: function(inc) {
        this.value += typeof inc === "number" ? inc : 1;
    }
};

myObject.increment(2);
document.write(myObject.value + br);    // 2

myObject.increment();
document.write(myObject.value + br);    // 3

myObject.increment(3);
document.write(myObject.value + br);    // 5

myObject.double = function() {
    var that = this;

    var helper = function() {
        that.value = add(that.value,that.value);
            return that.value;
    };

    helper();
};

myObject.double();
document.write(myObject.value);     //undefined

调用 double 方法后,我得到了 undefined。有谁知道为什么吗?

最佳答案

您的“add()”函数缺少一个return 语句:

var add = function(a,b) {
  return a + b;
}

实际上没有return 语句的函数"returns" undefined .

关于javascript - 对 `this` 关键字的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934333/

相关文章:

javascript - 如何动态添加和删除grid的action列中的cls

javascript - 自动将 JavaScript 计算结果放入 HTML 表单

python - 如何将一个 Python 对象的所有属性复制到另一个对象?

javascript - Jquery $(this) 范围错误

jquery - 仅当元素具有特定属性时,如何使用 jquery 应用 css?

javascript - ng-class 完美地应用第一类,但第二类不阅读 css 规则

javascript - 在 Javascript 中将数据添加到 html 表

php - 在 PHP 中从具有动态类名的类中获取静态属性

Java - 我的代码显然违背了常见的 OOD 范例,但不确定如何改进它

typescript - 使用 typescript 和 'this' 对象读取本地文件