原型在javascript中的使用

原型在javascript中的使用,javascript,prototype,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.sal

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

职能员工(姓名、年龄、性别){
this.name=名称;
这个。年龄=年龄;
这个。性=性;
}
var trialcoder=新员工('trialcoder',26,'M');
//employee.prototype.salary=null;
trialcoder.salary=19000;
文件。写入(“工资为”+trialcoder.工资);
我的想法-要添加另一个属性,我们需要使用
prototype
像-
employee.prototype.salary=null因此,在取消对这行的注释时,我预期会出现错误,但事实并非如此。请让我知道我在
原型概念中的错误所在


代码源-

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

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

您的代码是正确的,因为当您调用

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

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

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

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

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

阅读请参考Mozilla开发人员网络(MDN)。从今以后,w3schools的概念和功能都有点不确定explanations@badZoke@Trialcoder您为什么期望出现错误?@Trialcoder您可以始终设置对象的属性,否则您的
this.name=name
也无法工作。使用
employee.prototype.salary=null
将所有
employee
对象的
salary
的默认值设置为
null
,否则将
未定义,W3学校的概念和理念有点不确定explanations@badZoke@Trialcoder您为什么期望出现错误?@Trialcoder您可以始终设置对象的属性,否则您的
this.name=name
也无法工作。使用
employee.prototype.salary=null
将所有
employee
对象的
salary
的默认值设置为
null
,否则这是
未定义的
。啊,非常好…现在概念+1和绿色勾选非常好…现在概念+1和绿色勾选非常清晰tick@AlvinWong我认为仅仅因为小错误就否决一名新生有点苛刻:)@AlvinWong我认为仅仅因为小错误就否决一名新生有点苛刻:)