javascript - 在javascript中使用原型(prototype)

标签 javascript prototype

我正在学习 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/

相关文章:

javascript - 我正在加载图像而不是 iframe 并使用 jquery 在同一位置播放视频的图像上单击。适用于桌面设备但不适用于移动设备?

javascript - 这是正确的(JavaScript 原型(prototype)属性)吗?

javascript - 更改 window.location 原型(prototype)以禁用某些重定向?

javascript - 原型(prototype)继承未按预期工作

c# - Asp.Net按钮在javascript中没有ID?

javascript - 使用 YouTube API 嵌入视频会导致 404 错误

javascript - 当 AngularJS 缓存 HTTP 请求时,它缓存解析的 JSON 对象还是字符串响应本身

javascript - 如何将数组按顺序分组为子数组

Javascript 原型(prototype) - 在这种情况下有什么优势?

javascript - 将 JavaScript 代码迁移到带有 String.prototype 扩展的 node.js 模块