【问题标题】:Javascript Constructors and ObjectsJavascript 构造函数和对象
【发布时间】:2017-10-08 08:15:46
【问题描述】:

我需要一个这样的边缘对象:

var edge={ coordinates:[],  name};

function edge(coordinates,name)
{
this.coordinates = coordinates;
this.name = name;
}

但是,当我初始化它时,我收到一条错误消息说 edge 不是构造函数。

var a=new Array();

a[0]=0+move; a[1]=200;  
a[2]=0+move; a[3]=130;
var ed=new edge(a,"a");

【问题讨论】:

  • 您尝试将两个不同的东西命名为edge。如果您想要一个构造函数,请摆脱该对象。 function edge... 不是 var edge = {...
  • objectfunction 的名称不应该相同,尝试更改名称即可。
  • ...同名对象击败同名函数的原因是函数声明被提升到文件顶部。

标签: javascript oop object constructor


【解决方案1】:

在同一范围内只能有一个名为 edge 的标识符。发生这种情况时,分配给的最后一个会覆盖较早的一个。由于提升,首先处理函数声明(即使它在代码中出现在第二个),然后您的对象将覆盖它。因此,当您到达尝试使用edge 作为构造函数的行时,它已经被一个对象覆盖。更多关于吊装here.

function edge(coordinates, name){
  this.coordinates = coordinates;
  this.name = name;
}

var move = 100; // dummy variable just to make your code work

// Array literal notation. Simpler than making new array and populating
// indexes separately
var a = [0 + move, 200, 0 + move, 130 ];

// Use function as constructor
var e1 = new edge(a, "a");

console.log(e1);

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多