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

What makes the object.prototype to the constructor function if he has no name?

本文关键字:如果 构造函数 object prototype 是什么      更新时间:2023-09-26

我的以下代码是这样的:

 var triangle = {a:1, b:2, c:3};
function constructorFunction() {
  this.color = "red";
}
constructorFunction.prototype = triangle;

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

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

那不是真的。构造函数的prototype是使用 triangle 对象设置的。prototype有 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' }

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

我尝试控制台.log(constructorFunction.a);但它返回未定义。

这是因为您尚未创建实例。a是构造函数的 prototype 对象的属性。

console.log(constructorFunction.prototype.a);

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

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