js prototype 理解
注意:
1. 当构造函数内部有同名属性时,实例对象访问的属性为构造函数内的属性,否则向上查找原型链上的属性
2. 在原型链上添加方法时,不能够使用箭头函数
3. 在原型链上添加方法时,注意调用原型链方法的实例对象属性,不要对象调用的方法添加到数组上!!!
```js
// 1. 声明一个函数
function Employee(name,job,born){
this.name=name;
this.job=job;
this.born=born;
}
// 2. 为函数原型链添加一个 salary 属性方法(三种方式)
// 第一种方式 Object.prototype.salary=function(){document.write(bill === this)};
// 第二种方式 employee.__proto__.__proto__.salary= function(){document.write(bill === this)};
// 第三种方式
Employee.prototype.salary = function(){
// bill是实例对象,this同样指向当前实例
console.log(bill === this) // true
}
Employee.prototype.name = '小明'
// 3. 创建实例
var bill=new Employee("Bill Gates","Engineer",1985);
// 4.调用原型链方法
bill.salary()
bill.name // 指向实例方法中的name而非原型链上的name,当实例方法访问不到name属性时才向上查找原型链上的同名属性
```
持续补充中。。。

浙公网安备 33010602011771号