未使用返回值设置变量

Variable not being set with return value

本文关键字:变量 设置 返回值 未使用      更新时间:2023-09-26
class Person
  constructor: (@name, @org, @phone, @email) ->
    alert "#{name}: #{org} #{phone} #{email}"
__create = (title) ->
  p =
    name: ""
    org: "_organization"
    phone: "_phone"
    email: "_email"
  (p[pr] = "%#{title}#{p[pr]}%" for pr of p)
  Person(p.name, p.org, p.phone, p.email)
m = __create "author"
alert m.name

这始终给我:

类型错误: 无法读取未定义的属性"名称">

但是,编译后的 JavaScript 明确地为m赋值:

__create = function(title) {
  var p, pr;
  p = {
    name: "",
    org: "_organization",
    phone: "_phone",
    email: "_email"
  };
  for (pr in p) {
    p[pr] = "%" + title + p[pr] + "%";
  }
  return Person(p.name, p.org, p.phone, p.email);
};
m = __create("author");
alert(m.name);

我在这里错过了什么?

您需要使用 new 运算符,例如

__create = (title) ->
  p =
    name: ""
    org: "_organization"
    phone: "_phone"
    email: "_email"
  (p[pr] = "%#{title}#{p[pr]}%" for pr of p)
  new Person(p.name, p.org, p.phone, p.email)

http://coffeescript.org/#classes