原型在javascript中的使用
我正在学习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
<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我认为仅仅因为小错误就否决一名新生有点苛刻:)