我只想将类的对象(Pixel)添加到数组中。
export class Pixel {
constructor(x: number, y: number) {}
}
该类具有以下属性:
pixels: Pixel[] = [];
以下代码对我来说是合乎逻辑的,但不会将实际对象推送到我的数组像素。
this.pixels.push(new Pixel(x, y));
只有这样才有效:
var p = {x:x, y:y};
this.pixels.push(p);
有人可以解释为什么上述说法不起作用吗?
答案 0 :(得分:31)
如果您的示例代表您的真实代码,则问题不在push
中,而是您的构造函数无法执行任何操作。
您需要声明并初始化x
和y
成员。
显式:
export class Pixel {
public x: number;
public y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}
或暗示:
export class Pixel {
constructor(public x: number, public y: number) {}
}
答案 1 :(得分:0)
class PushObjects {
testMethod(): Array<number> {
//declaration and initialisation of array onject
var objs: number[] = [1,2,3,4,5,7];
//push the elements into the array object
objs.push(100);
//pop the elements from the array
objs.pop();
return objs;
}
}
let pushObj = new PushObjects();
//create the button element from the dom object
let btn = document.createElement('button');
//set the text value of the button
btn.textContent = "Click here";
//button click event
btn.onclick = function () {
alert(pushObj.testMethod());
}
document.body.appendChild(btn);