是什么让object.prototype成为构造函数,如果他没有名字?

时间:2015-06-14 14:28:12

标签: javascript function class inheritance prototype

我的以下代码是:

 var triangle = {a:1, b:2, c:3};

function constructorFunction() {
  this.color = "red";
}

constructorFunction.prototype = triangle;

我知道prototype关键字用这种语法扩展了类:Object.prototype.method = function() {}但是这个例子是什么?在constructorFunction.prototype之后没有属性或方法名称,这里会发生什么?

1 个答案:

答案 0 :(得分:2)

  

在constructorFunction.prototype之后没有属性或方法名称

那不是真的。使用prototype对象设置构造函数的triangleprototype有3个属性。

prototype是一个对象。请考虑以下示例:

var obj = { 'baz': 'bar' };
obj = {
   'foo': 'bash'
}
// obj => { 'foo': 'bash' }

在上面的代码段中,使用对象字面值obj变量的值重置

var obj = { 'baz': 'bar' };
obj.foo = 'bash';

// obj => { 'baz': 'bar', 'foo': 'bash' }

在上面的示例中,使用点表示法将原始对象扩展

  

我试试console.log(constructorFunction.a);但它返回undefined。

那是因为你还没有创建实例。 a是构造函数prototype对象的属性。

console.log(constructorFunction.prototype.a);

如果您创建实例对象,则a是该实例的属性。

var ins = new constructorFunction();
console.log(ins.a);