CoffeeScript将对象添加到数组中
CoffeeScript Adding object to an array
我有以下代码:
class Number
number = null
constructor: (num) ->
number = num
getNumber: -> number
class Sequence
numbers = []
constructor: ->
addNumber: (n) ->
numbers.push new Number n
displaySequence: ->
for number in numbers
alert number.getNumber()
seq = new Sequence()
seq.addNumber 1
seq.addNumber 2
seq.displaySequence()
seq
的numbers
数组应该包含值为1和2的2个Number
对象,但我得到的结果是2和2……有人能告诉我一些信息吗?
问题是您的数字类,它复制到以下JavaScript。变量号存储在范围中而不是number函数的成员时:
Number = (function() {
// number is stored in the scope not as a member of the prototype
var number;
number = null;
// this is the function that will be return
// so when ever you call it you override number
function Number(num) {
number = num;
}
Number.prototype.getNumber = function() {
return number;
};
return Number;
})();
您必须使用@
:使您想要存储的数字成为类的属性
class Number
constructor: (@num) ->
getNumber: -> @num
其编译为:
var Number;
Number = (function() {
function Number(num) {
//now num is stored in the returned function not in the scope of the parent function
this.num = num;
}
Number.prototype.getNumber = function() {
return this.num;
};
return Number;
})();
使用@声明本地字段。
class Number
constructor: (@num) ->
getNumber: -> @num
class Sequence
numbers = []
constructor: ->
addNumber: (n) ->
numbers.push (new Number n)
displaySequence: ->
for number in numbers
alert number.getNumber()
seq = new Sequence()
seq.addNumber 1
seq.addNumber 2
seq.displaySequence()
相关文章:
- 向多维数组添加值和从多维数组请求值
- 如何将JS数组添加到Meteor自动表单条目中
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 将行从数组添加到谷歌图表
- 从不同的数组添加重复的图块 PIXI.js
- 如何在 Javascript 中向数组添加其他对象
- 将javascript数组添加到多维数组中
- Coderbyte数组添加解决方案--For循环与For循环
- Knockout.js向数组添加新项
- Highcharts将变量数组添加到序列中
- 向javascript对象数组添加值
- 我可以用Javascript向数组添加函数吗
- 将数组添加到另一个数组
- 你能给被劫持的JavaScript数组添加一个函数吗
- 我可以向数组添加对象键吗
- 如何向JSON数组添加新属性
- 通过将$resource查询数组添加到AngularJS中另一个数组的底部来进行分页加载
- 使用名称/值从 json 数组添加项
- Javascript数组添加 - 所有组合
- 从 json 文件向 javascript 数组添加值