Nat*_*ate 3 javascript string object instantiation typeerror
在以下代码中,抛出TypeError: string is not a function第30行var myColour = new colour(255,255,255);.任何人都可以看到代码有什么问题.非常感谢.
var bodies = [];
var orbits = [];
var colours = [
new colour(45, 45, 45),
new colour(255, 0, 0),
new colour(0, 157, 255),
new colour(77, 250, 81),
new colour(255, 247, 0)
];
function colour(red, green, blue)
{
this.red = red;
this.green = green;
this.blue = blue;
};
window.onload = function() {
var c = document.getElementById("theCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
for (var colour in colours){
console.log(colour.red);
console.log(colour.green);
console.log(colour.blue);
};
var myColour = new colour(255,255,255);
console.log(myColour.red);
console.log(myColour.green);
console.log(myColour.blue);
};
Run Code Online (Sandbox Code Playgroud)
你有一个colour在for...in循环中调用的局部变量,这不是一个函数.将该变量更改为构造函数以外的其他类似的东西c,它会正常工作.您的代码已更正:
var bodies = [];
var orbits = [];
var colours = [
new colour(45, 45, 45),
new colour(255, 0, 0),
new colour(0, 157, 255),
new colour(77, 250, 81),
new colour(255, 247, 0)
];
function colour(red, green, blue)
{
this.red = red;
this.green = green;
this.blue = blue;
};
window.onload = function() {
var c = document.getElementById("theCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
for (var c in colours){
console.log(c.red);
console.log(c.green);
console.log(c.blue);
};
var myColour = new colour(255,255,255);
console.log(myColour.red);
console.log(myColour.green);
console.log(myColour.blue);
};?
Run Code Online (Sandbox Code Playgroud)