javascript - 为什么属性返回未定义而不是对象?

标签 javascript

在第一个 alert(this.child) 返回一个对象,第二个它返回 undefined 而我期望相同的结果。为什么以及如何修复它?

https://jsfiddle.net/7jnyozx1/2/

    var Child = (function() {
  function Child(data) {
  }

  return Child;
})();

var ChildModel = (function() {
  function ChildModel(data) {
    this.data = data;
    this.child = new Child(data);
    alert(this.child); // TEST OK : object
  }

  function local() {
    alert(this.child); // TEST KO : undefined
  }

  ChildModel.prototype.call = function() {
    local();
  }

  return ChildModel;
})();

data = "hello";
var childModel = new ChildModel(data);
childModel.call();

最佳答案

因为函数 local 与对象没有任何关系。您可以将该函数放在文件的顶部,它会以完全相同的方式工作。

您可以执行 local.apply(this);thiscall 方法传递给函数,但您可能我们也将 local 设为原型(prototype)函数。

关于javascript - 为什么属性返回未定义而不是对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35590441/

相关文章:

javascript - 谷歌可视化错误

javascript - 使用casperjs时如何等待页面加载?

javascript - 对 Jest 测试文件进行 linting 测试时,eslint 抛出 `no-undef` 错误

javascript - 是否有媒体查询类型的方式来根据设备切换 js 文件?

javascript - 垂直居中容器

javascript - 如何使用 Node.js 编写/更新新的 JSON 文件

javascript - 是否可以使 HTML 中的元素不遵循其父元素的 CSS Id?

javascript - 将 <div> 元素内的数字输入转换为人类可读的日期

javascript - JS 点击时不触发

javascript - 在渲染 react Hook 之前等待 API 数据