我正在学习 JavaScript 原型(prototype),这是我正在尝试的代码 -
<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>
我的想法- 要添加另一个属性,我们需要使用 prototype
,例如 - employee.prototype.salary = null;
等等取消评论这条线,我期待一个错误,但它不是..让我知道我在 prototype
概念中哪里错了。
代码源 - http://www.w3schools.com/jsref/jsref_prototype_math.asp
最佳答案
你的代码是正确的,因为当你调用
var trialcoder = new employee('trialcoder', 26, 'M');
你有一个 employee
的对象实例,就像任何其他对象一样,你可以将属性添加到你的 trialcoder
对象中,例如
trialcoder.salary = 19000;
在这种情况下,salary 属性仅对您的 trialcoder
对象可用,并且如果您创建另一个 employee
实例,例如 var another = new employee()
你在 另一个
对象中没有 salary 属性,但是,如果你做类似的事情
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
中添加属性时,每个对象实例都可以共享相同的属性,并且在从构造函数创建实例后,您可以更改该属性一个实例,但这不会影响其他实例。希望现在已经足够清楚了。
关于javascript - 在javascript中使用原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268505/