我的以下代码是:
var triangle = {a:1, b:2, c:3};
function constructorFunction() {
this.color = "red";
}
constructorFunction.prototype = triangle;
我知道prototype关键字用这种语法扩展了类:Object.prototype.method = function() {}
但是这个例子是什么?在constructorFunction.prototype
之后没有属性或方法名称,这里会发生什么?
答案 0 :(得分:2)
在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' }
在上面的示例中,使用点表示法将原始对象扩展。
我试试console.log(constructorFunction.a);但它返回undefined。
那是因为你还没有创建实例。 a
是构造函数prototype
对象的属性。
console.log(constructorFunction.prototype.a);
如果您创建实例对象,则a
是该实例的属性。
var ins = new constructorFunction();
console.log(ins.a);