1

I am learning prototype in JavaScript and this is the code I am trying -

<script>
function employee(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}

var trialcoder = new employee('trialcoder', 26, 'M');
//employee.prototype.salary = null;
trialcoder.salary = 19000;

document.write("salary is "+ trialcoder.salary);
</script>

My thoughts- To add another property we need to use prototype like - employee.prototype.salary = null; so on un commenting this line, I was expecting an error but it was not..let me know where I am wrong in the prototype concept.

Code Source - http://www.w3schools.com/jsref/jsref_prototype_math.asp

4

2 回答 2

5

你的代码是正确的,因为当你打电话

var trialcoder = new employee('trialcoder', 26, 'M');

你有一个对象实例,employee就像任何其他对象一样,你可以向你的trialcoder对象添加属性,比如

trialcoder.salary = 19000;

在这种情况下,salary 属性仅对您的trialcoder对象可用,并且如果您创建另一个employee类似的实例,则您var another = new employee()在对象中没有薪水属性another,但是,如果您执行类似的操作

function employee(name, age, sex) { //... }
employee.prototype.salary = 19000;

然后制作像这样的实例

var anEmp = new employee();
console.log(anEmp.salary); // 19000

创建另一个实例

var newEmp = new employee();
console.log(newEmp.salary); // 19000

如果你愿意,你可以

newEmp.salary = 10000;
console.log(anEmp.salary); // 10000

这意味着,当您在prototype构造函数(员工)中添加属性时,每个对象实例都可以共享相同的属性,并且在从构造函数创建实例后,您可以更改实例的属性,但这不会影响其他实例. 希望现在已经足够清楚了。

于 2013-06-24T05:50:35.167 回答
0

您的代码是正确的,您不会收到错误,因为使用原型您设置类员工的属性薪水,并且在创建类的对象后,您正在为该特定对象设置属性,如果您创建另一个对象,您也可以设置其属性薪水如果您使用原型设置属性,则该类的所有对象都将共享该(薪水)属性。

于 2013-06-24T05:36:33.880 回答