如Javascript中所述,方法和属性不会在形式一个对象上复制到原型链中的其他对象,我的问题是如何维护具有不同值的不同对象中的相同属性?请查看下面的代码,以便清楚了解我的问题。
function Person( name ){
this.name = name;
this.greeting = function() {
alert( 'Hi I\'m ' + this.name + '.' );
}
}
var p1 = new Person( 'Mr. X' );
var p2 = new Person( 'Mr. Y' );
p1.greeting();
p2.greeting();
这里我们创建了两个对象person1和person2。由于原型对象的属性和方法将被链接,并且不会被复制到p1和p2,这些对象将如何分别维护其名称属性(' Mr.X和Mr.Y') ,并在问候消息中显示相应的名称?
答案 0 :(得分:0)
此处,您的name
和greeting
属性不在原型中,但每个对象都拥有名称为name
和greeting
的自有属性。< / p>
如果要添加将在所有实例之间共享的内容,则需要在Person.prototype
对象中分配它。这里名称为greeting
的属性在所有实例中共享。
function Person( name ){
this.name = name;
}
Person.prototype.greeting = function() {
alert( 'Hi I\'m ' + this.name + '.' );
}
var p1 = new Person( 'Mr. X' );
var p2 = new Person( 'Mr. Y' );
p1.greeting();
p2.greeting();
&#13;
greeting
或您可以在此处查看的实例中prototype
的差异。当我更改一个对象的greeting
属性时,它只会影响该对象。
function Person( name ){
this.name = name;
this.greeting = function() {
alert( 'Hi I\'m ' + this.name + '.' );
}
}
var p1 = new Person( 'Mr. X' );
var p2 = new Person( 'Mr. Y' );
p1.greeting = function() {};
p1.greeting();
p2.greeting();
&#13;