Tri*_*der 1 javascript prototype
我正在学习JavaScript的原型,这是我正在尝试的代码 -
<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>
Run Code Online (Sandbox Code Playgroud)
我的想法 - 要添加另一个属性,我们需要使用prototype- employee.prototype.salary = null;所以在不评论这一行,我期待一个错误,但它不是..我知道我在错误的prototype概念.
代码来源 - http://www.w3schools.com/jsref/jsref_prototype_math.asp
你的代码是正确的,因为你打电话的时候
var trialcoder = new employee('trialcoder', 26, 'M');
Run Code Online (Sandbox Code Playgroud)
你有一个对象实例,employee就像任何其他对象一样,你可以为你的trialcoder对象添加属性
trialcoder.salary = 19000;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,salary属性仅对您的trialcoder对象可用,如果您创建另一个employee类似的实例,则var another = new employee()在another对象中没有salary属性,但是,如果您执行类似的操作
function employee(name, age, sex) { //... }
employee.prototype.salary = 19000;
Run Code Online (Sandbox Code Playgroud)
然后使实例像
var anEmp = new employee();
console.log(anEmp.salary); // 19000
Run Code Online (Sandbox Code Playgroud)
再做一个例子
var newEmp = new employee();
console.log(newEmp.salary); // 19000
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你可以
newEmp.salary = 10000;
console.log(anEmp.salary); // 10000
Run Code Online (Sandbox Code Playgroud)
这意味着,当您在prototype构造函数(employee)中添加属性时,每个对象实例可以共享相同的属性,并且在从构造函数创建实例后,您可以更改实例的属性,但这不会影响其他实例.希望现在已经足够清楚了.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |